0

我创建了一个函数来返回设备类型的 int 值,如下所示;

public int getDeviceType(string device)
    {
        int temp;
        if (device.ToLower() == "android")
        {
            temp = 1;
        }
        else if (device.ToLower() == "ios")
        {
            temp = 2;
        }
        return temp;

    }

我想返回设备的类型。

但这给了我一个错误

 "Use of unassigned variable temp"

我该如何解决?

谢谢。

4

4 回答 4

4

只需使用默认值初始化 temp ,如下所示

public int getDeviceType(string device)
{
    int temp = 0;
    if (device.ToLower() == "android")
    {
        temp = 1;
    }
    else if (device.ToLower() == "ios")
    {
        temp = 2;
    }
    return temp;

}
于 2012-05-17T09:15:44.817 回答
1

初始化temp为,0因为如果它在任何情况下都不去,那么它将返回什么值 temp 。

我知道int默认值是0,但在这些情况下你仍然必须初始化它。到那时它不会运行。

于 2012-05-17T09:17:23.500 回答
0

整型变量默认值为0时该行为的根本原因分析以及为什么需要对其进行初始化。

对于局部变量,编译器对流程有一个很好的了解——它可以看到变量的“读取”和变量的“写入”,并证明(在大多数情况下)第一次写入将发生在第一次读取之前.

实例变量并非如此。考虑一个简单的属性——你怎么知道有人在得到它之前是否会设置它?这使得强制执行明智的规则基本上是不可行的——所以要么你必须确保所有字段都在构造函数中设置,要么允许它们具有默认值。C# 团队选择了后一种策略。

于 2012-05-17T09:20:57.777 回答
0

基本上,编译器希望确保您初始化所有变量。本地和实例。所以理论上,你总是必须初始化所有的变量。

但是,由于编译器无法确定实例变量在第一次被读取之前是否已初始化,因此编译器会将所有实例变量隐式初始化为其默认值。

所以例外不是局部变量没有自动初始化,例外是实例变量确实自动初始化。

于 2012-05-17T11:36:17.277 回答