C#中修饰符的基础结构和行为

时间:2013-11-01 14:14:55

标签: c# keyword access-modifiers

访问修饰符(如public)和关键字(如virtual)可自定义类或属性的行为。所以他们的行为类似于属性。但他们内部如何运作?他们是否会调用.Net类库中的任何代码或任何属性?

5 个答案:

答案 0 :(得分:4)

不,publicaccess modifierVirtual是您正确指出的关键字,但两者都没有特别引用任何.NET库。它们没有引用任何属性,因此将它们称为属性是不正确的。 Attributes明显不同。

  

他们内部如何运作?

请参阅上面提供的链接。

  

他们是否会调用.Net类库中的任何代码或任何属性?

不,如前所述,它们与属性明显不同,并且与任何.NET库无关。

答案 1 :(得分:3)

不,分别告诉C#编译器如何在可访问性和继承方面处理该方法。

它们与.Net类库无关。此外,“属性”一词在C#的上下文中具有非常特定的含义,它们与这些关键字无关。

答案 2 :(得分:1)

公共和虚拟基本上都是保留字,这意味着它们具有特定的含义。 当编译器识别出那些保留字时,它将采取在设计架构中定义的必要动作。因此用户不能将保留字声明为标识符。我认为他们不会引用类似数据类型的东西(数据类型将在内部引用,因为它们被设计为结构。)

答案 3 :(得分:1)

他们是语言的一部分。它们被称为keywords,由语言保留,并将根据它们的作用在编译器中进行明确解析。它们是保留的,所以你不能做这样的事情:

  User public = new User();

在这里我使用“public”关键字作为变量名,这是C#语法的非法。如果发现关键字使用不当,编译器将无法编译您的代码。 (通常在IDE中,如果出现错误,编译器甚至不会被调用)

有一点需要注意的是,他们不是运营商。 (例如+ - =)。在许多方面,运算符可以被重载(您可以定义它们如何改变数据)。在C#中(我不能担保其他语言),关键字不能超载。

编程语言中的keyword通常用于告诉编译器如何处理特定上下文中的特定代码段。使用某些关键字的一些效果比其他关键字更明显。有点像这个代码正在做什么的暗示(在你的情况下,它的保护级别是什么)。每个keyword都有自己的规则。例如,LINQ有自己的运算符,例如aswhereselect,不能像publicprotectedprivate那样使用。

有关C#中关键字的更多信息,请查看以下内容:

http://msdn.microsoft.com/en-us/library/x53a06bb.aspx

答案 4 :(得分:1)

public 关键字是对编译器的指令,称为访问修饰符。这意味着您希望公开访问某个类型或成员,即以不受限制的方式访问。

微软在这里描述得非常好:

http://msdn.microsoft.com/en-us/library/yzh058ae(v=vs.80).aspx

virtual 关键字是编译器的另一条指令。它是一种与 public 不同的修饰符。它与访问无关。它表示您打算能够覆盖派生类中给定方法/属性的行为。

微软在这里有一个很好的描述:

http://msdn.microsoft.com/en-us/library/9fkccyh4(v=vs.71).ASPX

它们都不以任何方式与属性相关,这完全是一个不同的概念。它们在这里描述:

http://msdn.microsoft.com/en-us/library/z0w1kczw.aspx