从这个例子怎么看出静态方法好了

FIR1987 2010-02-05 03:57:32
从这个例子怎么看出静态方法好了,是说如果统计人数的那个方法如果不是静态的,就不能调用第二次了吗。。。初学者谢谢

class Game
{
static int num=0;//参赛车手人数
//增加参赛人数
public Game()
{
num++;
}
//车手中途放弃
public void GiveUp()
{
num--;
}
//获取当前参赛车手数,静态公共,大家共有的不属于对象,属于类
public static void GetCarsNumber()
{
Console.WriteLine("现在参赛车手为{0}人……加油~~~~ ^_^",Game.num);
}
static void Main(string[] args)
{
Game g1 = new Game();
Game g2 = new Game();
Game g3 = new Game();
//查看此时的人数
Game.GetCarsNumber();
//2号放弃
g2.GiveUp();
//查看2号放弃后此时的人数
Game.GetCarsNumber();

Console.Read();
}
}
...全文
86 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
别递烟哥不会 2010-02-05
  • 打赏
  • 举报
回复
我感觉这里用静态,就是为了统一数据,在num 改变的时候lock一下,如果不是静态的话,数据时不准确的
  • 打赏
  • 举报
回复
当然可以不是静态的,而是对象的
你想想啊,没有这个静态的static int num=0变量,每个对象各自保留一份自己的数据,那就得不到正确的结果了,(所谓静态全局变量)
如果把那个静态变量和静态方法放到一个专门的类中:
public class GameData
{
public static num=0;
public static void GetCarsNumber()
{
Console.WriteLine("现在参赛车手为{0}人……加油~~~~ ^_^",num);

}
}
从Game中提取出上面这个类再去调用,是不是好理解多了?
Snowdust 2010-02-05
  • 打赏
  • 举报
回复
静态的意思是所有实例共享一个存储空间,在这个例子中如果不用静态变量就麻烦了。
tkscascor 2010-02-05
  • 打赏
  • 举报
回复
````
十八道胡同 2010-02-05
  • 打赏
  • 举报
回复
如果统计人数的那个方法如果不是静态的,就不能调用第二次了吗
-------------------
不是不能调用第2次,而是只初始化一次
静态方法属于类,不属于实例
include_me 2010-02-05
  • 打赏
  • 举报
回复
静态没有好坏之分, 要看实际应用场景.
"静态"归类型所有, "非静态"归实例所有,作用范围不同.

111,120

社区成员

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

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

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