类中静态变量、静态方法和动态变量、动态方法在使用范围有如何的区别?

zzmdegm 2007-02-18 03:51:34
静态变量、静态方法是不需要实例化可以直接使用的。
动态变量、动态方法是需要实例化才可以使用的。

但是什么时候用静态,什么时候用动态的呢?特别是方法,好像范围有点模糊一样!
...全文
767 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
3000sunqin 2007-02-19
  • 打赏
  • 举报
回复
同意bbdog的说法,可以这么说静态方法类似于面向过程开发中的基础函数库的概念(或者说是那些您认为系统本来就该有的功能),但是静态变量并不这么简单,静态方法只能调用静态变量,静态变量在所有的类实例中只有一份副本,所有的实例共享这个静态变量,因此可以使用静态变量进行某些统计功能或者对象实例间通信功能,但是应该慎用。
bbdog 2007-02-19
  • 打赏
  • 举报
回复
有些类提供一些类似“工具”的方法,不需要new一个这样的对象,再来调用它所提供的方法。
比如:Console类,new一个Console感觉上就是多此一举。
再比如:Math类,提供一些众所周知的数学函数计算,new一个Math类,再调用诸如:
MyMath.Sin(?);
MyMath.Cos(?);
感觉上别扭,也像是多此一举样。

当你发现有样的类时,你就会感觉到需要把它们定义为静态类了。

再举个例子,比如你写一个“俄罗斯方块”的游戏。
游戏中一供有七种不同的块,每个方块有四种不同的状态。
你可以有两种选择:
1、每回合new一个新的方块,供玩家移动和调整;
2、程序运行时,直接生成七个静态的方块,每回合移动和调整的,只不过是其中一个方块在不同位置的显示;
另外,整个“游戏”就是一个Game类,需要动态new一个,再MyGame.Star()吗?
或是直接Game.Star()来得自然一些呢?

遇多了,你就有感觉了,慢慢来。
灰太狼 2007-02-18
  • 打赏
  • 举报
回复
静态变量在程序没有退出之前一直都占着内存,所以大量使用静态变量对内存会有一定占用,局部变量在它自己的作用域内起作用,然后就自动被回收了。所以要根据自己的需求来决定使用哪个
jxf654 2007-02-18
  • 打赏
  • 举报
回复
up
cangwu_lee 2007-02-18
  • 打赏
  • 举报
回复
根据自己的项目环境确定


110,571

社区成员

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

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

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