读一本书(VS 2010),它说.NET Csharp中的命令(语句)不能存在于方法之外。我想知道-字段声明等等,这些都是命令,不是吗?它们存在于类级别。有人能详细解释一下吗?
发布于 2011-05-15 16:01:10
在C#中没有“命令”这样的概念。
根据C#规范,静态/实例变量声明不属于C#中的语句-它是字段声明(这是类成员声明的一种类型)。有关示例,请参阅C# 4 spec的第10.5节。
现在,声明局部变量的语句就是语句,正如规范中声明语句所定义的那样(第8.5节)。不过,它们只适用于当地人。有关C# 4中语句生成的完整列表,请参见第B.2.5节。
基本上,C#规范定义了所涉及的术语-因此,尽管您可能非正式地认为是“命令”之类的,但从正确性的角度来看,C#规范是权威的来源。(当然,除了它没有说出语言设计者的意思的地方。这非常罕见。)
发布于 2011-05-15 16:07:48
如果你的意思是:
class Foo
{
int count = 0;
StringBuilder buffer = new StringBuilder();
}count和buffer是使用初始化器表达式的声明。但是这段代码不包含任何语句。
发布于 2011-05-15 16:48:27
字段初始化器是用方法外部的代码编写的,但编译器将该代码放在构造函数内。
所以像这样的字段初始化器:
class Foo {
int Bar = 42;
}基本上是构造函数中的一个字段和一个初始化器:
class Foo {
int Bar;
Foo() {
Bar = 42;
}
}https://stackoverflow.com/questions/6007210
复制相似问题