访问修饰符(如 public)和关键字(如 virtual)自定义类或属性的行为。所以它们的行为类似于属性。但是它们在内部是如何工作的呢?他们是否从 .Net 类库中调用任何代码或任何属性?
5 回答
No, public
is an access modifier. Virtual
is a keyword as you correctly indicated, though neither refer to any .NET library in particular. They don't refer to any attributes and it wouldn't be correct to call them attributes for that matter. Attributes are distinctly different.
How does they internally work?
Please refer to the links provided above.
Does they call any code or any attributes from .Net class library?
No, as stated already they're distinctly different from attributes and are not associated with any .NET library.
不,它们分别告诉 C# 编译器如何处理可访问性和继承方面的方法。
它们与 .Net 类库无关。此外,“属性”一词在 C# 的上下文中具有非常特定的含义,它们与这些关键字无关。
public 和 virtual 基本上是保留字,这意味着它们具有特定的含义。当编译器识别这些保留字时,它将采取设计架构中定义的必要操作。因此用户不能将保留字声明为标识符。我认为他们不会引用数据类型之类的东西(数据类型将在内部被引用,因为它们被设计为结构。)
它们是语言的一部分。它们被称为keywords
由语言保留的,并将根据它们的作用在编译器中显式解析。它们是保留的,所以你不能做这样的事情:
User public = new User();
在这里,我使用“public”关键字作为变量名,这在 C# 语法中是非法的。如果发现某个关键字使用不当,编译器将不会编译您的代码。(通常在 IDE 中,如果出现错误,编译器甚至不会被调用)
需要注意的一件事是,它们不是操作员。(如 + - =)。运算符,在许多事情中,可以重载(您可以定义它们如何改变您的数据)。在 C# 中(我不能保证其他语言),关键字不能重载。
编程语言中的Akeyword
通常用于告诉编译器如何处理特定上下文中的特定代码段。使用某些关键字的某些效果比其他关键字更明显。有点像这个代码在做什么的提示(在你的情况下,它的保护级别是什么)。每个keyword
人都有自己的行为规则。例如,LINQ 有自己的运算符,例如as
, where
,select
不能像public
,protected
和一样使用private
。
有关 C# 中关键字的更多信息,请查看以下内容:
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
它们都与attributes没有任何关系,这是一个完全不同的概念。它们在这里被描述: