我如何使用c#over {}中的var,如:
if
{
var test;
while
{
test = "12345";
//test is defined
}
var test2 = test;
//test is undefined
}
我不明白。
答案 0 :(得分:5)
您不能将var
与未初始化的变量一起使用,因为在这种情况下,编译器不会知道实际类型。 var
是语法糖 - 编译器应该决定使用哪种类型,在IL代码中你会看到真正的类型。
如果你真的想要var
,你应该使用某种类型的任何值(在你的情况下为string
)初始化它:
if
{
var test = String.Empty; // initialize it - now compiler knows type
while
{
test = "12345";
//test is defined
}
var test2 = test;
//test is undefined
}
答案 1 :(得分:1)
Var不是类型,var是一个关键字,它告诉计算机决定哪种类型适合您的值。
您可以改用:
if
{
var test = "placeholder";
while
{
test = "12345";
//test is defined
}
var test2 = test;
//test is undefined
}
或者更好的是,只需从一开始就声明一个字符串,当您不知道声明时需要什么类型时,可以使用var,当您更好地了解类型时用适当的类型声明引用。
编辑: 这段代码对我来说很合适(请注意,在您的原始代码中,您错过了条件
if (true)
{
string test;
while (true)
{
test = "12345";
//test is defined
}
var test2 = test;
//test is undefined
}
答案 2 :(得分:1)
您可以使用object
类型而不是var
,然后将null
指定为初始化。它可以根据您的意愿适用于string, int
。
请查看以下内容:
if
{
object test = null;
while
{
test = "12345";
//test is defined
}
var test2 = test;
//test is undefined
}
请查看DotNetFiddle中的示例。