我认为类成员声明是声明语句。但是,当我从规范中查看declaration statements时。我发现了这个:
declaration-statement:
local-variable-declaration;
local-constant-declaration;
显然,类成员声明既不是局部变量也不是局部常量。那么,一个班级成员声明的正确用语是什么? Statements
部分中的类成员声明没有单独的章节,所以它们不是声明吗?如果他们属于哪个类别?
答案 0 :(得分:2)
声明声明 可视为 声明 的子集。最终 声明声明 是 声明 和 声明的交集强>
现在有关会员,您必须知道您正在处理哪种会员。对于课程,您有 class member declaration 等...
通过阅读您的评论,我认为您对术语 声明 感到困惑。在一种语言中,语句应该是可计算的东西。 C#并不严格遵循这些规则(许多其他语言也没有)。增强 声明声明 。
例如:
int i;
int i = 0;
两者都是 声明声明 。计算部分是堆空间中的分配和/或值的初始化。为了简化 声明 ,将在词法范围分析器和/或链接器中使用。但是, 语句 主要用于字节码发射器
回到会员声明。你可以说成员声明可以嵌入计算并且是正确的。例如:
class a { static int i = 42;}
唉,C#并没有严格遵循定义,应该将其命名为 class-member-declaration-statement 。但是这个名字变得愚蠢,并不是所有的陈述都在班级成员声明中被接受。
答案 1 :(得分:2)
来自C# programming guide page on statements,
程序采取的操作以语句表示。常见操作包括声明变量,赋值,调用方法,循环集合以及分支到一个或另一个代码块,具体取决于给定的条件。语句在程序中执行的顺序称为控制流程或执行流程。每次运行程序时,控制流程都可能不同,具体取决于程序对运行时收到的输入的反应。
语句是告诉语言进行操作。
类成员声明本身不定义动作;它定义了一个对象的一些属性。
由drilling down through the C# grammar starting from statement
支持; statement
下的所有内容都可以说是一个动作或可执行的代码行。
答案 2 :(得分:1)
成员声明的正确用语是什么?
class-member-declaration:
constant-declaration
field-declaration
method-declaration
property-declaration
event-declaration
indexer-declaration
operator-declaration
constructor-declaration
destructor-declaration
static-constructor-declaration
type-declaration
问题是您链接的文档是半英文/半英文。我发现this browsable pure BNF更有用。
答案 3 :(得分:0)
我相信你想看看第10节 - 课程。例如,成员函数在10.5中定义 - 方法: http://msdn.microsoft.com/en-us/library/aa645760(v=vs.71).aspx
在编辑时:(在第一行添加'例如'),同时:
简单的声明语句不包括定义类成员(或结构等)的(潜在的)必要附加信息,如mathk指出的那样。正如您所指出的,声明声明定义为:
declaration-statement:
local-variable-declaration;
local-constant-declaration;
但是当你看到local-variable-declaration
的定义时,例如:
local-variable-declaration:
type local-variable-declarators
您可以看到成员声明为何特殊 - 需要涵盖修饰符等额外信息。基本上,该定义的'type'部分必须已经解析为早期定义(或内置类型)。对于更复杂的定义(例如成员),语法定义需要在其他部分(10,11等)中涵盖的其他属性不适用于基本的声明 - 语句情况。一旦定义了基础类型,声明该特定“物种”的实例就是声明语句。