语句不能存在于方法之外?

时间:2011-05-15 07:56:47

标签: c# methods terminology

读一本书(VS 2010),它说.NET Csharp中的命令(语句)不能存在于方法之外。 我想知道 - 现场声明等,这些是命令,不是吗?它们存在于阶级。有人可以详细说明一下吗?

6 个答案:

答案 0 :(得分:1)

如果你的意思是:

class Foo
{
    int count = 0;
    StringBuilder buffer = new StringBuilder();
}

计数和缓冲区是使用初始化程序表达式的声明。但是此代码不包含语句

答案 1 :(得分:1)

使用方法外部的代码编写字段初始化程序,但编译器将该代码放在构造函数中。

这样的字段初始化程序如下:

class Foo  {

  int Bar = 42;

}

基本上是构造函数中的字段和初始化器:

class Foo  {

  int Bar;

  Foo() {
    Bar = 42;
  }

}

答案 2 :(得分:0)

正如你所说的那样,声明是一个实际完成任务的声明。

答案 3 :(得分:0)

不,他们是宣言。确切地说,类成员声明。

对于那些存在于方法之外的人来说,这是完全合法的。否则,您无法首先声明方法!

通过“语句”,本书告诉您,您不能在方法之外使用方法调用之类的东西。例如,以下代码是非法的:

public void DoSomething()
{
    // Do something here...
}

MessageBox.Show("This statement is not allowed because it is outside a method.");

答案 4 :(得分:0)

在C#中没有“命令”这样的概念。

静态/实例变量声明未被归类为C#中的语句 - 它是字段声明(这是一种 class-member-declaration )根据C#规范。例如,请参见C# 4 spec的第10.5节。

现在,声明 local 变量的语句是语句,由规范中的 declaration-statement 定义(第8.5节)。它们仅用于当地人。有关C#4中语句制作的完整列表,请参阅B.2.5节。

基本上,C#规范定义了所涉及的术语 - 因此,虽然您可能认为非正式的“命令”等,但在正确性方面,C#规范是权威的来源。 (当然,除非它没有说出语言设计者的意思。这种情况非常罕见。)

答案 5 :(得分:0)

类,名称空间,字段声明不是声明语句。

可以使用表达式在方法外部初始化字段,但是表达式是语句时,有许多不是表达式的语句(例如。if)。

这一切都归结为语言语法如何定义术语,而C#的作用方式非常普遍(例如,与C和C ++非常相似)。