类型声明是隐式静态成员
本文关键字:静态成员 声明 类型 | 更新日期: 2023-09-27 18:31:29
我认识的人刚刚让我解释MSDN的这个声明,我傻眼了。
常量或类型声明隐式是静态成员。
短语"或类型声明隐式地是一个静态成员"对我来说毫无意义。
那是什么意思?
对我来说,
type declaration is implicitly a static member
是有道理的.
因为如果你有类:
class Foo
{
public class Bar
{
}
}
您不能通过以下方式访问类Bar
:
Foo f = new Foo();
Bar b =new f.Bar();
(我什至不确定如何写它才能使其有意义)。
如果要访问Bar
类,则需要执行以下操作:
Bar b = new Foo.Bar()
您可以通过类而不是实例访问它。
因此,Bar
是Foo
的静态成员。
在本文的上下文中,我相信他们将类型定义为简单的内部struct
s,内部class
es和enum
s的定义 - 它们始终可以在静态上下文中作为类型引用。
这意味着当你定义这样的类时,
public class Message
{
const int i = 10;
enum NewType{ typeval, typevale2 }
}
在这里,两者都是隐式静态成员。
Const 是隐式静态的,但它与普通静态字段的不同之处在于它在程序执行期间不能更改。虽然它仍然是静态的。
类型声明
类型声明是类声明(第 10.1 节)、结构声明(第 11.1 节)、接口声明(第 13.1 节)、枚举声明(第 14.1 节)或委托声明(第 15.1 节)。
从类型声明 MSDN 文档
静态成员
当字段、方法、属性、事件、运算符或构造函数声明包含静态修饰符时,它将声明静态成员。此外,常量或类型声明隐式声明静态成员。静态成员具有以下特征:
- 当在形式 E.M.的成员访问(第 7.5.4 节)中引用静态成员 M 时,E 必须表示包含 M 的类型。E 表示实例是一个编译时错误。
- 静态字段仅标识一个存储位置。无论创建多少个类实例,静态字段都只有一个副本。
静态函数成员- (方法、属性、事件、运算符或构造函数)不对特定实例进行操作,在此类函数成员中引用此函数成员是一个编译时错误。
从静态和实例成员 MSDN 文档
所以这意味着Constants
和所有类型的Type declaration
都是静态的,没有添加关键字static
。