【发布时间】:2014-07-22 15:21:54
【问题描述】:
对上一篇文章感到抱歉……这是另一篇文章。
到目前为止,我似乎有人使用 (.) 运算符来:
(1) 结构的访问成员
(2) 访问类的静态/常量成员
(3) 枚举类型的访问字面量
(例如 dayofweek.cs http://referencesource.microsoft.com/#mscorlib/system/dayofweek.cs 的那些)
没有该结构/类/枚举的对象/实例。
我知道一个运算符的含义可能取决于它的操作数;
但其中一些在我看来有点奇怪。
例如,(3)的情况:
在 C# 中,我可以编写:
DayOfWeek a;
if (a == DayOfWeek.Sunday) *do something...*;
但在 C 中,我只能写:
DayOfWeek a;
if (a == Sunday) *do something...*.
再举一个例子,在(1)的情况下:
在C语言中,只有有了结构的实例,才能对其成员进行操作;
但是在 C# 中,就像在https://stackoverflow.com/questions/24888864/two-things-about-source-code-of-struct-datatime-in-c-sharp 中一样,我们可以直接使用结构的名称(即DataTime)来访问其成员(即Maxticks),即DataTime.Maxticks
显然有一些不同,对吧?
在哪里可以阅读此操作的详细教程或文档,说明如何使用此操作?只有语言规范?
**我实际上并不欣赏通过逐个查看使用此操作的示例来学习的方式,因为它们不会告诉我“如何使用它”,而只是“我可以做什么”它”;不过,这两个是不同的。
【问题讨论】:
-
阅读静态关键字。
-
一切都与范围有关... [instanceName].[instanceMember], [ClassName].[StaticMember], [EnumName].[EnumMember], this.[CurrentInstanceMember] - 左侧定义范围,.基本上总是意味着“在左侧范围内”,然后右侧是您尝试访问的范围的哪一部分。
标签: c# struct static enums static-methods