我知道无法完成,因为只能对局部变量使用var。我只是想知道是否有人有理论为什么C#团队认为这应该如此。例如会有什么问题:
public class SomeClass
{
var someString = "hello"; //not cool
public SomeClass()
{
var someOtherString = "hello"; //cool
}
}
如果初始化someString
,那么它显然就像someOtherString
一样的字符串。为什么局部变量有一个规则而全局变量有另一个规则?
答案 0 :(得分:4)
重复,因此CW。
让我简单地过分简化C#编译器的工作原理。首先,我们遍历每个源文件并执行“仅限顶级”解析。也就是说,我们在所有嵌套级别标识每个命名空间,类,结构,枚举,接口和委托类型声明。我们解析所有字段声明,方法声明等。事实上,我们解析除方法体之外的所有事物;那些,我们稍后跳过并回到他们身边 [...]
如果我们有“var”字段,则在分析表达式之前无法确定字段的类型,并且在我们已经需要知道字段的类型之后发生这种情况。
答案 1 :(得分:1)
它与编译器必须解决的搜索量有关。