散分200,欢迎大家讨论,类的静态方法和实例方法有什么区别,各有什么优劣

freeboy827 2008-09-25 09:34:50
RT
...全文
484 81 打赏 收藏 转发到动态 举报
写回复
用AI写文章
81 条回复
切换为时间正序
请发表友善的回复…
发表回复
zuoyqren 2011-11-08
  • 打赏
  • 举报
回复
[Quote=引用 42 楼 viena 的回复:]

引用 34 楼 XPingguo 的回复:
静态方法调用后常驻于内存,不释放内存
实例方法,new 了对象后才占内存,会释放内存

我一般处理简单的,独立的东西用静态方法
实例方法,一般处理复杂点的,和类中的其它方法有偶合

静态方法用起来方便,不用 new 对象


好多人在误导!
new 了对象后才占内存的是对象本身的数据!
会释放内存的也是数据而不是方法!
数据在……
[/Quote]
同意在中说方法
alexhuan 2008-09-28
  • 打赏
  • 举报
回复
主要还是内存分配上的区别吧。
leecopper 2008-09-28
  • 打赏
  • 举报
回复
帮顶
treesky 2008-09-28
  • 打赏
  • 举报
回复
静态方法在程序执行的时候就会被加载到内存中
实例方法是在调用创建实例的时候才会分配内存空间。

从这里看出二者之间在占用 内存上的差别le !

顺便国庆快乐!
jx218 2008-09-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 nightmare23 的回复:]
静态方法不需要类型实例就可以调用。
实例方法,必须要通过实例来调用。
[/Quote]
如果你一个页面中,要使用很多次的调用一个类里面的方法的话..这个时候.要是用静态方法,内存上就要比只实例化一个的要多多了..
jacklee_008 2008-09-28
  • 打赏
  • 举报
回复
学习
GhostAdai 2008-09-25
  • 打赏
  • 举报
回复
路过接分!
puleezi 2008-09-25
  • 打赏
  • 举报
回复
路过
baidu636 2008-09-25
  • 打赏
  • 举报
回复
fds
taolanjian 2008-09-25
  • 打赏
  • 举报
回复
刚学,顶!
diffmaker 2008-09-25
  • 打赏
  • 举报
回复
静态的不需实例化,通过类直接调用
动态的必须实例化,通过类的实例来调用

对于常见的与实例无关的函数或方法,可以创建一个静态类,使用起来方便一些
doc123 2008-09-25
  • 打赏
  • 举报
回复
静态变量和动态变量主要区别内存使用上,
动态变量是不断分配内存的。
zhujiechang 2008-09-25
  • 打赏
  • 举报
回复
静态装入内存不会释放,实例会有生存期
再见品月 2008-09-25
  • 打赏
  • 举报
回复
[Quote=引用 42 楼 viena 的回复:]
引用 34 楼 XPingguo 的回复:
静态方法调用后常驻于内存,不释放内存
实例方法,new 了对象后才占内存,会释放内存

我一般处理简单的,独立的东西用静态方法
实例方法,一般处理复杂点的,和类中的其它方法有偶合

静态方法用起来方便,不用 new 对象


好多人在误导!
new 了对象后才占内存的是对象本身的数据!
会释放内存的也是数据而不是方法!
数据在数据区,每个对象都有自己的数据,可以有很多分copy;
而实例…
[/Quote]

學習。。。其他的誤人子弟
killer_liqiao 2008-09-25
  • 打赏
  • 举报
回复
jf
A1027 2008-09-25
  • 打赏
  • 举报
回复
静态方法通常当作工具方法使用.
mawering 2008-09-25
  • 打赏
  • 举报
回复
学习一下!
assky124 2008-09-25
  • 打赏
  • 举报
回复
静态的的不拉屎也要先占个茅坑(内存)
动态的有 的时候才会去。
navysong 2008-09-25
  • 打赏
  • 举报
回复
同意42楼的说法。

1、可以先搞清楚 堆栈、堆的概念再讨论
Method不管是静态、实例都只有一份,加载、编译都一致,何来性能、内存
静态、实例方法如果你去看MSIL的话 区别是一个有 this调用、一个无this

2、主要看使用时机比较好:
比如,你使用双检琐的 Singleten 模式,那你需要使用静态的Object来防止多线程冲突
还有你的一个变量是需要达到各实例累计目的,以可以作为Static的

3、一般情况不设计静态方法,静态方法常常是与类无关的。这点也很难讲清,可自己找到自己的使用状况。
我提两条自己的想法,设计静态方法时
a、与具体对象无关的(这个不好判定),如.NET 的Math里定义
的运算方法
b、多处使用且与对象Field无关的。
(静态Medthod只能直接操控静态变量,而静态变量在多线程环境下会引发冲突)

Skyleo_liu 2008-09-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 nightmare23 的回复:]
静态方法不需要类型实例就可以调用。
实例方法,必须要通过实例来调用。
[/Quote]相当经典.
加载更多回复(61)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧