类型声明隐式是静态成员

时间:2013-09-17 05:12:41

标签: c#

我认识的人刚刚让我解释这句话from the MSDN而且我傻眼了。

  

常量或类型声明隐式是静态成员。

该短语“或类型声明隐含为静态成员”,对我来说没有意义。

这是什么意思?

5 个答案:

答案 0 :(得分:4)

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()

您可以通过类而不是实例访问它。对象
因此,BarFoo的静态成员。

答案 1 :(得分:2)

在本文的上下文中,我认为他们定义的类型只是内部的定义 - struct s,内部 - class es和enum s - 其中始终可以在静态上下文中作为类型引用。

答案 2 :(得分:2)

这意味着当你定义这样的类时,

 public class Message
    {

        const int i = 10;

        enum NewType{ typeval, typevale2 }


    }

这里两者都是隐式静态成员。

答案 3 :(得分:0)

Const是隐式静态的,但它与普通静态字段的不同之处在于它在程序执行期间无法更改。它仍然是静态的..

答案 4 :(得分:0)

类型声明

  

类型声明是类声明(第10.1节),结构声明(第11.1节),接口声明(第13.1节),枚举声明(第14.1节)或委托声明(第15.1节)。

来自 Type declarations MSDN文档

静态成员

  

当field,method,property,event,operator或constructor声明包含static修饰符时,它声明一个静态成员。另外,常量或类型声明隐式声明了静态成员。静态成员具有以下特征:

     
      
  • 当在EM的形式的成员访问(第7.5.4节)中引用静态成员M时,E必须表示包含M的类型.E表示实例是编译时错误。
  •   
  • 静态字段只标识一个存储位置。无论创建了多少个类实例,都只有一个静态字段的副本。
  •   
  • 静态函数成员(方法,属性,事件,操作符或构造函数)不对特定实例进行操作,并且在此类函数成员中引用此函数是编译时错误。
  •   

来自 Static and instance members MSDN文档

这意味着Constants和所有Type declaration都是静态的,没有添加关键字static