论坛首页 编程语言技术论坛

C#静态变量的诡异与恶心

浏览 27424 次
精华帖 (0) :: 良好帖 (2) :: 新手帖 (2) :: 隐藏帖 (2)
作者 正文
   发表时间:2008-12-28  
starse7en77 写道
这似乎和鸡先有还是蛋先有一个道理 .
楼主你觉得呢 ?

如果鸡先有恶心 , 蛋先有就不恶心了 ?


由于掌握一门语言的成本比较高等因素,也许大家总是有意无意的会陷入语言优劣的论战中,这不是我这里的本意。基本上我只是以一个初学者的姿态,在学习静态构造函数的时候,做了一道“诡异”(请允许我再用一次,下次不用这个词语了)的题目,于是乎引出了这么一篇有点不道德的帖子,实在是不好意思。(由于这篇帖子中的某个更不道德的回复,我还被无辜的扣了30分,从此论坛中的生活举步维艰)

但是事实上我的疑问依然存在,而且也没有在帖子的讨论中得到本质的解决。我想问的其实是为什么,而不是如何,或者应该如何。

静态成员在面向对象语言中存在以及如此不优雅地存在,为什么?

Main函数作为静态函数的姿态在Java/C#中存在,也许可以这么理解吧:
由于Java/C#都是纯面向对象的,所以一个通常的对象都需要实例化之后才能运行。故对象中的功能,即函数,也必须在其实例化对象之后才能调用。这样在偏执的纯面向对象语言中就引入了一个矛盾,实例化这个过程由谁来执行?由于所有对象都需要实例化,语言调用的入口似乎没有了。介于这个矛盾,引入了静态的概念,以解决此问题。被标志为“静态”的东西不需要某种实例化。这也许就是类似C#的语言中的Main函数都是静态的原因。(感觉说到这里有点类似于哥德尔的“不完备性定理”了)而一个新事物的引入,有其积极作用的同时,也会带入其对应的制约层面。静态导致了交叉引用的出现,估计为了解决这个矛盾,Java、C#和C++就自发地采用了各自不同的处理方式。完美的面向对象中因此有了这个缺陷。

我不知道其他语言是否也这样,例如Smalltalk,对这语言没有学过。但是对于Python来说,似乎没有这个问题,Python处理面向对象的方式比较特殊吧。

有时间再深究了……
0 请登录后投票
   发表时间:2008-12-28  
第二页的几段代码跟lz是不一样的。

main函数所在的类不同。结果和lz不一样。
0 请登录后投票
   发表时间:2008-12-29  
语言之争和地域攻击本质一样。
0 请登录后投票
   发表时间:2008-12-29  
确实很恶心!
这么恶心的东西还摆出来,就更恶心了!哈哈
0 请登录后投票
   发表时间:2008-12-29  
BigBlue 写道
确实很恶心!
这么恶心的东西还摆出来,就更恶心了!哈哈


你觉得是我恶心还是,这个问题恶心,还是在Javaeye发这样的帖子恶心,还是面向对象恶心,还是这个讨论恶心,还是你自己也参与了这个讨论恶心,还是这个恶心本身恶心?
请对你的言行负责,我希望讨论技术层面的,否则我希望管理员把我的帖子删掉得了,大家恶心还不如我自己一个人恶心
0 请登录后投票
   发表时间:2008-12-29  
subwayline13 写道


OO本身就不完美,不然FP怎么这么热呢,你就别纠结这个了……


恩恩,正准备一个人消化去呢
0 请登录后投票
   发表时间:2008-12-29  
willzh 写道
BigBlue 写道
确实很恶心!
这么恶心的东西还摆出来,就更恶心了!哈哈


你觉得是我恶心还是,这个问题恶心,还是在Javaeye发这样的帖子恶心,还是面向对象恶心,还是这个讨论恶心,还是你自己也参与了这个讨论恶心,还是这个恶心本身恶心?
请对你的言行负责,我希望讨论技术层面的,否则我希望管理员把我的帖子删掉得了,大家恶心还不如我自己一个人恶心


首先这只是一个幽默,你反应过分了。没有任何针对你个人的意思。
其次我说的第一个恶心是指语法本身的恶心;第二个恶心是说这种恶心的设计不应该出现在我们的代码中,所以讨论其如何诡异意义不大;
最后还是非常感谢你能把这个恶心的东西拿出来让大家恶心一下,防止在以后的代码中恶心。所以,恶心并不是贬义词!
0 请登录后投票
   发表时间:2008-12-29  
willzh 写道
BigBlue 写道
确实很恶心!
这么恶心的东西还摆出来,就更恶心了!哈哈


你觉得是我恶心还是,这个问题恶心,还是在Javaeye发这样的帖子恶心,还是面向对象恶心,还是这个讨论恶心,还是你自己也参与了这个讨论恶心,还是这个恶心本身恶心?
请对你的言行负责,我希望讨论技术层面的,否则我希望管理员把我的帖子删掉得了,大家恶心还不如我自己一个人恶心

对了,忘了问,我还要负什么责任?我负好了,与你的帖子无关。
0 请登录后投票
   发表时间:2008-12-29  
BigBlue 写道
willzh 写道
BigBlue 写道
确实很恶心!
这么恶心的东西还摆出来,就更恶心了!哈哈


你觉得是我恶心还是,这个问题恶心,还是在Javaeye发这样的帖子恶心,还是面向对象恶心,还是这个讨论恶心,还是你自己也参与了这个讨论恶心,还是这个恶心本身恶心?
请对你的言行负责,我希望讨论技术层面的,否则我希望管理员把我的帖子删掉得了,大家恶心还不如我自己一个人恶心


首先这只是一个幽默,你反应过分了。没有任何针对你个人的意思。
其次我说的第一个恶心是指语法本身的恶心;第二个恶心是说这种恶心的设计不应该出现在我们的代码中,所以讨论其如何诡异意义不大;
最后还是非常感谢你能把这个恶心的东西拿出来让大家恶心一下,防止在以后的代码中恶心。所以,恶心并不是贬义词!


同意你的看法,大概我这人比较钻牛角尖,暂且忘掉这个问题了,谢谢你
0 请登录后投票
   发表时间:2008-12-29  
没有什么恶心的,这个结果很正常,你可以在第7,10,17,20,25行设置断点,然后跟踪自然就会明白为什么有这个结果。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics