我看到了这种奇怪的行为,我想知道是否有合理的解释:
当我(偶然地)在函数的局部变量中添加一个额外的分号时,如下所示:
public void MyMethod ()
{
int a = 1;;
Console.WriteLine(a); //dummy
}
它确实编译了,但它表明它是多余的。
但是,当我使用字段(也是偶然的)执行该操作时,我得到了一个错误(编译):
问题
在领域中,有什么理由造成这种限制吗?
注:我已经知道另一个限制因素就是不允许var
带着田野。但这里有些不同。
发布于 2018-05-10 10:35:54
;
单独是一条语句(空语句),但只有声明语句允许出现在类的正文中;其他类型的语句只能出现在方法的正文中。
发布于 2018-05-10 12:00:19
;
它本身就是一个空语句。在类范围中,只分配声明语句。C# Specification 5.0, §10.1.6 Class Body
class-body:
{ class-member-declarations }
例如,不能在单独的语句中初始化字段:
class Foo
{
int x = 2; // this is allowed
x = 5; // this is not
}
因此,只能声明字段和其他成员,但不能在类主体中使用其他语句。
https://stackoverflow.com/questions/-100008442
复制相似问题