首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >语句不能存在于方法之外吗?

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

Stack Overflow用户
提问于 2011-05-15 15:56:47
回答 6查看 220关注 0票数 2

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

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-05-15 16:01:10

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

根据C#规范,静态/实例变量声明不属于C#中的语句-它是字段声明(这是类成员声明的一种类型)。有关示例,请参阅C# 4 spec的第10.5节。

现在,声明局部变量的语句就是语句,正如规范中声明语句所定义的那样(第8.5节)。不过,它们只适用于当地人。有关C# 4中语句生成的完整列表,请参见第B.2.5节。

基本上,C#规范定义了所涉及的术语-因此,尽管您可能非正式地认为是“命令”之类的,但从正确性的角度来看,C#规范是权威的来源。(当然,除了它没有说出语言设计者的意思的地方。这非常罕见。)

票数 0
EN

Stack Overflow用户

发布于 2011-05-15 16:07:48

如果你的意思是:

代码语言:javascript
运行
复制
class Foo
{
    int count = 0;
    StringBuilder buffer = new StringBuilder();
}

count和buffer是使用初始化器表达式的声明。但是这段代码不包含任何语句。

票数 1
EN

Stack Overflow用户

发布于 2011-05-15 16:48:27

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

所以像这样的字段初始化器:

代码语言:javascript
运行
复制
class Foo  {

  int Bar = 42;

}

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

代码语言:javascript
运行
复制
class Foo  {

  int Bar;

  Foo() {
    Bar = 42;
  }

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6007210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档