C# C语言中修饰语的基本结构和行为#

C# C语言中修饰语的基本结构和行为#,c#,keyword,access-modifiers,C#,Keyword,Access Modifiers,访问修饰符(如public)和关键字(如virtual)自定义类或属性的行为。因此,它们的行为类似于属性。但它们内部是如何工作的?他们是否调用.Net类库中的任何代码或属性?否,public是一个。是一个您正确指出的关键字,尽管两者都没有特别提到任何.NET库。它们不引用任何属性,因此称它们为属性是不正确的。两者截然不同 它们内部是如何工作的 请参考上面提供的链接 他们是否调用.Net类库中的任何代码或属性 不,如前所述,它们与属性明显不同,并且与任何.NET库都没有关联。不,它们分别告诉C#编

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

否,
public
是一个。是一个您正确指出的关键字,尽管两者都没有特别提到任何.NET库。它们不引用任何属性,因此称它们为属性是不正确的。两者截然不同


它们内部是如何工作的

请参考上面提供的链接

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

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

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


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

public和virtual基本上是保留词,这意味着它们有特定的含义。
当编译器识别这些保留字时,它将采取设计体系结构中定义的必要操作。因此,用户不能将保留字声明为标识符。我认为它们不会引用类似于数据类型的任何东西(数据类型将在内部被引用,因为它们被设计为结构。)

它们是语言的一部分。它们被称为
关键字
,由语言保留,并将在编译器中根据它们的操作进行显式解析。它们是保留的,因此您不能执行以下操作:

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

需要注意的一点是,他们不是操作员。(例如+-=)。操作符可以重载(您可以定义它们如何改变数据)。在C#(我不能保证其他语言)中,关键字不能重载

编程语言中的
关键字
通常用于告诉编译器在特定上下文中如何处理特定代码段。使用某些关键字的某些效果比其他关键字更明显。有点像这段代码在做什么的提示(在您的情况下,它的保护级别是什么)。每个
关键字
都有自己的操作规则。例如,LINQ有自己的操作符,如
as
where
select
,它们不能像
public
protected
private
那样使用

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

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

微软在这里对此进行了很好的描述:

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

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

它们都与属性没有任何关系,属性是一个完全不同的概念。这里描述了它们:


我不确定我是否理解这个问题??你想知道它们是做什么的,或者它们在代码库中的什么地方被定义的吗?谷歌?我认为您可以很快找到这样的答案……然后找到答案并发布:-)“它们内部是如何工作的?”编译器团队可能会为您回答这个问题。尽管我怀疑它是专有的,唯一好的答案是“符合规范”,“它们在内部如何工作”-您想讨论一下元数据格式和.NET程序集中的
MethodDef
表吗?