我没有问题,如果
{
string nom;
string ou;
nom = "1";
if (nom == "1")
{
nom +=1;
ou = nom;
}
Console.Write(ou);
}
但我不能打印出价值,我不知道为什么
答案 0 :(得分:11)
尝试这样的事情
{
string nom;
string ou = String.Empty;
nom = "1";
if (nom == "1")
{
nom +=1;
ou = nom;
}
Console.Write(ou);
}
答案 1 :(得分:7)
C#编译器要求在使用前明确初始化变量。
定义初始化是编译时的事情,它不考虑变量的运行时值。
但是,如果变量nom
被明确定义为const
,则编译器将确保它在运行时不会更改并且if
语句块将运行且变量{ {1}}肯定会被分配给。
答案 2 :(得分:6)
这甚至可以编译吗?
nom
是string
- 你怎么做nom += 1
?
答案 3 :(得分:5)
尝试用
替换第二行string ou = null;
问题是如果nom不等于“1”,则变量ou不会被初始化。这里的编译器希望保证为您分配了一个值。
答案 4 :(得分:3)
这是因为在if块的范围之外未分配。将声明行更改为string ou = string.Empty;
,并且它可以正常工作。
答案 5 :(得分:3)
此代码段甚至不会编译,更不用说打印ou
了。 C#强制所有变量在访问之前进行初始化,在您的情况下并非总是如此。因此改变
string ou;
,说:
string ou = "";
会做得很好。
答案 6 :(得分:1)
另一种选择是在其他地方设置ou:
if (nom == "1")
{
nom +=1;
ou = nom;
} else
{
ou = "blank value";
}