C# 关于var关键字用法的问题
我想要一些像:C# 关于var关键字用法的问题,c#,.net,C#,.net,我想要一些像: var somevar; if (cond) { var= something; // a lot of code } else var = somethingElse; 然而,编译器强烈要求在以这种方式使用变量之前,应该对其进行初始化。怎么做。或者如何实现这种情况?你不能。使用var时,必须初始化声明中的变量……否则编译器无法知道使用哪种类型 使用var定义的变量仍然是静态类型的…编译器只是根据声明中的赋值推断类型。如果您正在查找动态键入的内容,如果您使用的是.NET
var somevar;
if (cond)
{
var= something;
// a lot of code
}
else var = somethingElse;
然而,编译器强烈要求在以这种方式使用变量之前,应该对其进行初始化。怎么做。或者如何实现这种情况?你不能。使用var时,必须初始化声明中的变量……否则编译器无法知道使用哪种类型 使用
var
定义的变量仍然是静态类型的…编译器只是根据声明中的赋值推断类型。如果您正在查找动态键入的内容,如果您使用的是.NET 4.0,则可以尝试使用动态
类型
在您的情况下,您需要在声明时指定类型。“var”只是一种指示编译器派生确切类型的方法。但要使其工作,需要使用返回该类型的表达式对其进行初始化
var somevar = default(TYPE GOES HERE);
if (cond)
{
somevar = something;
// a lot of code
}
else somevar = somethingElse;
或者不要使用
var
,而是使用两个表达式稍后将指定的类型。您使用关键字var作为变量。用示例中的somevar替换var。在这种情况下不要使用var。编译器判断变量类型的方法是分析右边的变量。如果你没有在右边给它任何东西,编译器就没有办法找到它。当使用var
声明变量时,你必须立即给它赋值,这样编译器才能知道它的类型
尽管您可以制作一个足够聪明的编译器来找到第一个用法,但C#编译器并不理解这段代码
您可以使用:
var someVar = cond ? someThing : someThingElse;
if (cond) {
// A lot of code
}
如果
某物
和某物
属于同一类型。我认为这对于理解someVar的可能值更为清晰,但是您需要测试cond两次 如果条件的两个值都是相同的类型,比如字符串,请执行以下操作:
var somevar = "";
正如其他人所提到的,
var
仍然是一个静态类型,它只是意味着编译器在编译时推断该类型,而不是在运行时
我想这就是你想要的:
object somevar;
if (cond)
{
somevar = something;
// a lot of code
}
else somevar = somethingElse;
下面的文章详细介绍了如何使用var var关键字指示编译器从初始化语句右侧的表达式推断变量的类型。推断类型可以是内置类型、匿名类型、用户定义类型或.NET Framework类库中定义的类型 仅当局部变量在同一时间声明和初始化时,才能使用var 陈述无法将变量初始化为null、方法组或匿名函数
您可以使用object关键字,但在取消绑定时仍需要知道它是什么类型,因此,如果在前面所述的声明时指定var,则最好使用var
object a = something;
SomeCustomObject b = (SomeCustomObject)a;
如果“something”和“somethingElse”属于同一类型,则将somevar初始化为该类型的默认值
var somevar = default(TYPE GOES HERE);
if (cond)
{
somevar = something;
// a lot of code
}
else somevar = somethingElse;
你的意思是做
var=something代码>或者应该是var-somevar=something
Elena,看一看:我不同意对象而不是var“solution”。后来你需要将somevar强制转换为something和somethingElse的公共类型,因此你失去了与显式类型相关联的编译时检查和var关键字的简洁性。如果条件的两个值不是相同的基类型,无论如何,代码可能有问题。