日期:2014-05-18  浏览次数:20856 次

静态与实例的区别
用了很久C#,就是不明白静态与实例的区别,请教高手帮忙解释一下。谢谢

------解决方案--------------------
所有静态类型都存在于堆上,且唯一。可有实例共享。 实例类在每次创建时在堆上创建,有实例名字引用。
从内存看,实例类元素放置在堆上,有一个个存在于栈中的实例名引用,而静态类元素一直存在于堆上,可直接索引得到!

建议楼主看下C#图解教程,第六章6.3到6.6节
------解决方案--------------------
静态的东西可以直接使用,不需要实例化一个对象后,通过那个对象点出里面的东西。


实例恰好相反,需要使用New关键字创建 一个新的实例后使用。
------解决方案--------------------
分静态库 和动态库
静态库.LIB 包含源程序和EXE在一个程序之中,直接使用子函数即可,其中的类使用,NEW 来实例化为
具体使用的值或函数等,包含在程序内,当然稳定性是最好的,但由于一开始就在EXE一起,所以耗费内存最大。一般把常变和调用多的,写在EXE一起,这属于常用基础的办法。
为了多语言之间,或很多编程者之间共同完成协作编程,又出现了动态库又名DLL,有了DLL我们项目完成
和改动量就小很多了,对于DLL的调用,则和制作有关,。net的DLL是指令集,可以反汇编出来,毫无安全性
保障,如果制作时使用的是静态共享声明的DLL,则调用时无需实例化,当EXE程序运行时,相关DLL中的段即加入内存,直到程序结束,这种方式的,速度稍慢,也比较耗内存,调用简单可以直接使用。
如果使用动态声明的DLL,则需要使用时,new实例化一下到具体EXE中用,这个实例化意思是,不同EXE进程间
虽然可能同是调用该DLL,但数据完全不会相关的,默认是不共享内存的,除非特别处理.由于是使用才调入内存,所以节省内存,但损耗了速度和稳定性,不过对程序升级有利,有时升级,只是个别DLL,而EXE不变。
总之和你使用的需要相关,都可以的,只要在你认为的满足速度,稳定,内存占用范围内,
如果你需要成员间互相合作那么DLL合适,如果自己一个人,和速度要求高,做成单EXE吧,
我个人比较喜欢设计过程中使用DLL分功能,且喜欢制作可静态调用的DLL,方便简单可以直接调用,用对象浏览器也可看到一般函数也是这样静态共享声明,当某个条件达不到时比如速度,内存,我才会去改成别的方式,也给你这个建议哦。
不知道见解对不,我只是这样认为吧,供你有选择的参考。