如果我有一点问题
{
string nom;
string ou;
nom = "1";
if (nom == "1")
{
nom +=1;
ou = nom;
}
Console.Write(ou);
}
但我不能打印你的价值我不知道为什么
如果我有一点问题
{
string nom;
string ou;
nom = "1";
if (nom == "1")
{
nom +=1;
ou = nom;
}
Console.Write(ou);
}
但我不能打印你的价值我不知道为什么
尝试这样的事情
{
string nom;
string ou = String.Empty;
nom = "1";
if (nom == "1")
{
nom +=1;
ou = nom;
}
Console.Write(ou);
}
C# 编译器要求在使用前明确初始化变量。
确定初始化是编译时的事情,它不考虑变量的运行时值。
但是,如果变量nom
被显式定义为const
,编译器将确保它不会在运行时更改并且if
语句块将运行并且变量ou
将被明确分配给。
这甚至可以编译吗?
nom
是string
——你怎么办nom += 1
?
尝试将第二行替换为
string ou = null;
问题是如果 nom 结果不等于“1”,变量 ou 将不会被初始化。这里的编译器想要保证 ou 已经被赋值。
这是因为 ou 在 if 块的范围之外未分配。将声明行更改为string ou = string.Empty;
它应该可以工作。
这个片段甚至不会编译,更不用说打印了ou
。C# 强制在访问之前初始化所有变量,这在您的情况下并不总是如此。从而改变
string ou;
说:
string ou = "";
会做得很好。
另一种选择是在 else 中设置 ou:
if (nom == "1")
{
nom +=1;
ou = nom;
} else
{
ou = "blank value";
}