为什么大量采用static ? private byte[] data = new byte[1024];//唯独这里不 static ,为什么?private static int size = 30;很多static ... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 static对象属于类型,非static属于对象思考一下就想通的了 我就是不明白都定义为static有什么好处?我用非static一样能完成功能啊 static编译好像比较快还有在定义一个类的时候用static的话,不需要实例化,可以直接用,在某些时候用起来比较方便 原因1:static 变量和函数只局了限于所在的文件,如果在不同的文件中出现同名的变量或是函数不互相干扰!(如果是public)原因2:与上面的朋友一至 static编译比较快 ??????? static方法执行的时候不会传入this指针,所以无法访问实例的成员。不传入this指针,那么在执行效率上就比非static方法高,当然也高不了多少。他的存在是在逻辑清晰一些 static是表示类方法或者类属性阿,这个方法或者属性类不需要实例话就可以使用阿!!因为这个方法或者属性是属于这个类的,而不是属于类的某个特殊实例的阿!! 首先应该是使用全局变量和函数。因为在 C#中没有了全局变量和全局函数,并且更重要的是为了将全局的东西更好的封装,所以用static 来封装是一个不错的选择。毕竟全局的东西还是少不了的。第二是有一些功能(函数)和属性(变量)是不依赖于实例的,就可以用 Static,这样在使用的时候可以不构造实例而直接使用 和C++编译的一样。如果用static编译完之后,代码是放在最顶端data段,静态分配所以在写代码的时候,能用static就用。 static定义放在栈中,而不是堆中。 因为可以少写很多new 和一对括号() 偶觉得,static用的太多了,容易影响代码的可读性。使用static时不用对象来调用,而直接使用类来调用。一般性如果是公有数据才使用static,否则用的太多反倒成了四不象,大家可以想象一下,如果程序当中都是使用类来调用,铺天盖地的都是类名,那么就不是什么面向对象了,而只是披着面向对象的皮的面向过程罢了如果大家要追求快的话,可以使用C或者汇编之类的东东,那又何必需要什么面向对象呢? 面向对象本来就是方便代码的可读性的,当然是需要损失一些时间的,但是现在机器这么快,又何需顾及这么多呢,再说,本来.NET就是用的虚拟机,再怎么快,也不过如此,如果真的要追求速度的话,还是C和汇编用起来方便 1.static数据成员就是为了在类的所有实例里面当全局数据用,取代全局变量2.线程回调函数就是static的,因此只能访问static数据,不能直接访问别的数据,保证了线程间不相互干扰。达到的效果,就像每个进程都只能访问自己地址空间的数据,不会干扰其它进程一样。3.除以上两点以外,就再也没有别的作用了(不是为了快,才做成static的。例如:人类都有年龄的属性,如果为了编译快,把年龄static了,那么每过一年大家都长大一岁,到时候年龄里到底填你的还是填我的?) 1)单件模式2)模拟C3)类的构造函数为private,防止继承的情况下 我也不喜欢大量用static,那样感觉不太像面向对象的程序了。 呵呵,总结一下,两点原因:1.可以作为全局变量或函数来用.2.有些功能或属性(如:线程回调)不能依赖于实例,避免产生干扰,这时用static 1。类中的函数可以直接执行,而不用生成实例2。不用动态生成,销毁,使程序高效3。有些全局的计数器必须用STATIC C# C#里gdi+如何消除画图且无闪烁? 在线等,C#窗体程序中使用了windows Media Player控件,但是打包时无法将其打包进去,如何解决?谢谢 2个线程同时操作2个不同progressbar问题 sidebar C#基础知识 紧急求助:.net开发的应用程序在另外机器安装后,出现错误! 做一个 特效 C#动态添加combobox控件 在网页中弹出消息框并获取用户返回值? 如何让dataGrid中某列可编辑,而其他列不可编辑?(WinForm) xp pro 装了.NET03 ,为什么http://localhost不能显示?我已经设置虚拟目录
思考一下就想通的了
我就是不明白都定义为static有什么好处?我用非static一样能完成功能啊
static 变量和函数只局了限于所在的文件,如果在不同的文件中出现同名的变量或是函数不互相干扰!(如果是public)
原因2:与上面的朋友一至
首先应该是使用全局变量和函数。因为在 C#中没有了全局变量和全局函数,并且更重要的是为了将全局的东西更好的封装,所以用static 来封装是一个不错的选择。毕竟全局的东西还是少不了的。第二是有一些功能(函数)和属性(变量)是不依赖于实例的,就可以用 Static,这样在使用的时候可以不构造实例而直接使用
如果用static编译完之后,代码是放在最顶端data段,静态分配
所以在写代码的时候,能用static就用。
如果大家要追求快的话,可以使用C或者汇编之类的东东,那又何必需要什么面向对象呢?
2.线程回调函数就是static的,因此只能访问static数据,不能直接访问别的数据,保证了线程间不相互干扰。达到的效果,就像每个进程都只能访问自己地址空间的数据,不会干扰其它进程一样。
3.除以上两点以外,就再也没有别的作用了(不是为了快,才做成static的。例如:人类都有年龄的属性,如果为了编译快,把年龄static了,那么每过一年大家都长大一岁,到时候年龄里到底填你的还是填我的?)
2)模拟C
3)类的构造函数为private,防止继承的情况下
1.可以作为全局变量或函数来用.
2.有些功能或属性(如:线程回调)不能依赖于实例,避免产生干扰,这时用static
2。不用动态生成,销毁,使程序高效
3。有些全局的计数器必须用STATIC