当前位置: 代码迷 >> C# >> 抽象类型的步骤不必声明为virtual,为什么static类型的方法必须加static修饰
  详细解决方案

抽象类型的步骤不必声明为virtual,为什么static类型的方法必须加static修饰

热度:92   发布时间:2016-05-05 03:25:39.0
抽象类型的方法不必声明为virtual,为什么static类型的方法必须加static修饰?
既然static类是不能声明实例的,那么天然的,其成员和方法都成为static的不就行了吗?

为什么还要显示的给static类的成员和方法加上static修饰符呢? 感觉有点多次一举的样子。C#这样设计的原因是什么?

谢谢。
------解决思路----------------------
如果你不加static修饰,编译器怎么知道你是静态方法呢,那样怎么通过  类名.xxx的方法直接访问呢
------解决思路----------------------
引用:
如果你不加static修饰,编译器怎么知道你是静态方法呢,那样怎么通过  类名.xxx的方法直接访问呢

楼主的意思是说,既然编译的时候能检测到静态类里不允许有实例方法,那么就直接把实例方法当静态方法编译不就得了,还报错干啥
------解决思路----------------------
我反而认为
抽象类型的方法不必声明为virtual
有违强类型编程语言的原则
容易让人产生误解
------解决思路----------------------
这东西完全是开发者的意图,一些语言就不需要加virtual
------解决思路----------------------
被静态调用的方法必须是有 static 声明,而与类本身是否静态无关
而调用动态方法时,已并不需要一定写 this
我认为这是过渡时期的解决方案,极可能以后的版本就不再区分静态和动态了。
编译器会根据上下文自动做出合理的抉择,这就向自然语言迈近了一步
至少那个 var 声明就很人性的了
  相关解决方案