类中的var给出了错误

Pra*_*tik 14 .net c# var class visual-studio

可能重复:
在方法之外使用var

class A {
string X;
}
// Proper
class A {
var X;
}
// Improper (gives error)
Run Code Online (Sandbox Code Playgroud)

为什么,我不能在类中使用var类型变量声明,为了实现它可以做些什么或者什么是替代?

在函数/方法中,我可以声明一个var类型变量,那么为什么不能,我在课堂上这样做?

谢谢.

Mar*_*ell 20

// method variable
var X;
Run Code Online (Sandbox Code Playgroud)

永远有效的-即使在方法内部; 你需要立即初始化来推断类型:

// method variable
var X = "abc"; // now a string
Run Code Online (Sandbox Code Playgroud)

至于为什么这不适用于与现场初始化:简单地说,该规范是这么说的.现在为什么规范说的是另一个辩论...我可以检查注释的规范,但我怀疑它们对于方法变量更为必要,其中逻辑更复杂(重新LINQ等).此外,它们通常匿名类型一起使用(这是它们存在的必要性); 但匿名类型不能暴露在公共API上...所以你可能会非常困惑:

private var foo = new { x = 123, y = "abc"}; // valid
public var bar = new { x = 123, y = "abc"}; // invalid
Run Code Online (Sandbox Code Playgroud)

总而言之,我对目前的逻辑很满意.


Bra*_*ith 5

如果你真的不知道实例变量将保持的对象类型,请使用object,而不是var.var并不意味着"我不知道",它意味着"为我推断出类型" - 这就是为什么它永远不能用于班级成员.

  • 正如马克所说,这并不能真正解释为什么当有“存在”字段初始化器时它不推断它。 (2认同)