Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 类成员声明不是语句吗?_C#_Declaration_Terminology_Statements - Fatal编程技术网

C# 类成员声明不是语句吗?

C# 类成员声明不是语句吗?,c#,declaration,terminology,statements,C#,Declaration,Terminology,Statements,我认为类成员声明是声明语句。但是当我从规范中查看时,我发现: declaration-statement: local-variable-declaration; local-constant-declaration; 显然,类成员声明既不是局部变量也不是局部常量。那么,类成员声明的正确术语是什么?在语句部分中没有单独的章节来说明类成员声明,所以它们不是语句吗?如果它们属于哪一类 会员声明的正确术语是什么 问题是您链接到的文档是半纯英语/半BNF。我发现更有用。声明语

我认为类成员声明是声明语句。但是当我从规范中查看时,我发现:

declaration-statement:
      local-variable-declaration;
      local-constant-declaration;
显然,类成员声明既不是局部变量也不是局部常量。那么,类成员声明的正确术语是什么?在
语句
部分中没有单独的章节来说明类成员声明,所以它们不是语句吗?如果它们属于哪一类

会员声明的正确术语是什么

问题是您链接到的文档是半纯英语/半BNF。我发现更有用。

声明语句可以看作是声明的子集。最后,声明语句声明声明的交叉点

现在关于会员,你必须知道你正在与哪种会员打交道。你有等课程

通过阅读您的评论,我认为您对术语声明感到困惑。在语言中,语句应该是可计算的。C#没有严格遵守这些规则(许多其他语言也没有)。要增强声明声明,请执行以下操作

例如:

int i;
int i = 0;
class a { static int i = 42;}
两者都是一个声明声明。计算部分是堆空间中的分配和/或值的初始化。简化声明将在词法范围分析器和/或链接器中使用。但是,语句主要用于字节码发射器

回到会员声明。您可能认为成员声明可以嵌入计算,并且是正确的。例如:

int i;
int i = 0;
class a { static int i = 42;}

遗憾的是,C#没有严格遵循定义,应该将其命名为类成员声明语句。但是名称变得很愚蠢,并且不是所有的语句都可以在类成员声明中被接受。

我相信您想看看第10节-类。例如,10.5-方法中定义了成员函数:

在编辑时:(在第一行添加“例如”),同时:

简单的声明语句不包含定义类成员(或结构等,如mathk所指出的)所需的(潜在的)附加信息。正如您所指出的,声明语句定义为:

declaration-statement:
    local-variable-declaration;
    local-constant-declaration;
但当您查看
局部变量声明的定义时,例如:

local-variable-declaration:
    type local-variable-declarators
您可以看到为什么成员声明是特殊的-需要包含额外的信息,例如修饰符。基本上,该定义的“类型”部分必须已解析为早期定义(或内置类型)。对于更复杂的定义(如成员),语法定义需要其他部分(10、11等)中包含的附加属性,这些属性不适用于基本声明语句。一旦定义了基础类型,那么声明特定“种类”的实例就是一个声明语句

程序执行的操作用语句表示。根据给定的条件,常见的操作包括声明变量、赋值、调用方法、循环集合以及分支到一个或另一个代码块。在程序中执行语句的顺序称为控制流或执行流。每次程序运行时,控制流可能会发生变化,这取决于程序对运行时接收到的输入的反应

语句是告诉语言去做动作的东西

类成员声明本身并不定义动作;它定义了对象的某些属性


这一点得到了以下方面的支持:;
语句
下的所有内容都可以说是一个动作或一行可执行代码。

有单独的章节。@FrédéricHamidi是的,但我的意思是在语句部分。当你说“我以为类成员声明是声明语句”时,这是基于什么的?@weston nothing,只是我一直认为它们是声明语句,因为它们声明了成员。你是在谈论成员变量还是方法,或者两者都是。我不明白为什么
member
应该限制为
feilds
。但是,因为你有我认为答案+1的四分之一。@mathk是的,很公平,我做了一个假设,我不明白为什么
member
应该局限于方法。这不是,出于某种原因,我认为OP询问的是成员函数,而不是一般的成员。已经在更新我的答案:)现在我要问你为什么你认为
成员
仅限于
类成员
?结构成员也存在。:)我不是在找这个。我在问会员声明是什么声明?如果是,那是什么样的?:)我想当语言有语法的英语术语定义时。很难定义这些术语。