Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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# 使用正确的术语:什么是“a”;类参考“;与a相比;类变量";?_C#_Oop - Fatal编程技术网

C# 使用正确的术语:什么是“a”;类参考“;与a相比;类变量";?

C# 使用正确的术语:什么是“a”;类参考“;与a相比;类变量";?,c#,oop,C#,Oop,为了确保在描述代码的某些方面时使用正确的术语,我要求澄清在以下上下文中的用法: 如果我们写 int myIntTest; 我们说“我们有一个int变量” 假设我们有一个Employee类,当我们编写 Employee myObjectTest; 我们说“我们有一个Employee对象的引用” 我的问题是: 说“myObjectTest是一个Employeeclass”变量是否正确?我通常说“myObjectTest是Employee类型的变量”,或者如果我想说得非常具体,“myObjectT

为了确保在描述代码的某些方面时使用正确的术语,我要求澄清在以下上下文中的用法:

如果我们写

int myIntTest;
我们说“我们有一个
int
变量”

假设我们有一个Employee类,当我们编写

Employee myObjectTest;
我们说“我们有一个
Employee
对象的引用”

我的问题是:

说“
myObjectTest
是一个
Employee
class”变量是否正确?

我通常说“myObjectTest是Employee类型的变量”,或者如果我想说得非常具体,“myObjectTest是一个引用Employee实例的变量(或
null

我不确定是否有一个明确的答案。也许有人知道,可以给你指出正确的部分:)

以下是我的发现:

类型 值类型与引用类型的不同之处在于,值类型的变量直接包含其数据,而引用类型的变量存储对其数据的引用,后者称为对象

变量 变量表示存储位置。每个变量都有一个类型,它决定了变量中可以存储哪些值


因此,C#规范似乎讨论了一个具有类型的变量。因此,“myObjectTest是Employee类型的变量”与规范的语言相匹配。

对于变量本身,我认为它是“Employee类型的变量”:

如果Employee类的一个实例被分配给它,我可能会说它是“一个Employee实例”:

在两个开发人员之间的一般对话中,您会发现变量作为占位符,与它所持有的数据相比,其重要性通常会减弱。您可能会谈论变量
employeeA
employeeB
,但实际上您要谈论的是分配给这些变量的员工实例-“为什么employeeA和employeeB有相同的名称和角色?嗯。哦,看,它们指向同一个实例”


如果你说某个东西是一个类变量,这有点模糊,但可能会被解释为“一个类范围的变量”——一个是类的数据成员的变量。最好避免使用这个短语,而是使用文档中用于这些短语的相同术语(字段、属性、方法、构造函数等都是类成员)。如果您决定使用“变量”,不要提及“类”-只要说“Employee variable”,就像“构造函数使用两个Employee变量”一样。如果您在方法规范中谈论变量,请将其称为参数或参数,或者说方法“采用(类名)”-“构造函数有两个雇员参数”或“此方法采用雇员数组”

如前所述,否-
myObjectTest
表示用于保存对
Employee
实例的引用的变量。说“Employee class’variable”意味着属于
Employee
类的变量,而不是表示该类实例的变量

Employee类的变量意味着它在某种程度上属于Employee类,这是不正确的。myObjectTest是一个引用对象(Employee)的变量。在初始化之前,它只是对Employee类的空引用。“
myObjectTest是Employee类型的变量”
“更为正确。我不会这么说,因为至少在其他语言中,“类变量”一词的含义完全不同,与你在这里的意图不同。我尊重地不同意结束这个问题的决定。讨论中的术语在相关需求和代码开发的交流中至关重要。@DavidW我同意,正确的术语不是意见,而是事实。您完全有能力阅读规范;你不需要我来做@埃里克·利珀特:我可以读,是的,但我对它了解不够,无法(有效地)找到解释它的部分——如果解释了的话。在过去,我看到过很多你写得很好的答案,你甚至可以精确地指出并引用规范中的小旁注:)抱歉,如果我这样说冒犯了你。规范以目录开始,以帮助你精确地指出适当的部分;软拷贝可以搜索关键词;规范的硬拷贝发布版本以关键字索引结尾。这就是我快速浏览规范的方式。我没有什么超能力。我没有被冒犯,但我反对只有牧师才能接触到规范的说法。我努力工作,以确保规范可供任何相关方使用;我鼓励你这样做,不要让我参与。我现在已经添加了规范的一部分,我相信这是支持我的声明的正确部分,并添加了一个链接。如果我的意图错了,我再次道歉。
//"variable of type Employee" or
//"employee variable"
Employee e;
//"employee instance e"
e = new Employee("John", "Smith", "Manager");