http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 10964|回复: 4

[C#入门] C#类和对象2-静态成员

[复制链接]
发表于 2014-7-14 04:17:48 | 显示全部楼层 |阅读模式
本帖最后由 wwwconsumer 于 2014-7-14 05:43 编辑

一般情况下,成员的变量是用来描述具体对象的,每个对象都会在自己的内存中存贮自己的数据,创建几个对象,就会有几份数据,它们独立存在,互不干扰,,一个对象不能访问另一个对象的数据。现在我们来设计一个游戏,如果狼的的数目达到5只,它们就敢攻击狮子,否则就会逃跑。为了统计狼的数目,我们需要在Wolf类中申明一个wolvesCount变量,用来记录狼的总数。wolvesCount是用来描述狼群的整体特征的量,可以用静态变量来实现,静态变量在内存中只有一份,为类的所有对象共享。静态变量用关键字static来申明。下面看设计wolf类
[C#] 纯文本查看 复制代码
{
    class Wolf
    {
        //声明静态变量
        public static int wolfCount = 0;

        //构造函数:当创建对象时wolfCount自增
        public Wolf()
        {
            wolfCount++;
        }
        //析构函数:当销毁对象时wolfCount自减
        ~Wolf()
        {
            wolfCount--;
        }

        //函数:遇到狮子时采取的行动
        public void Act()
        {
            if (wolfCount < 5)
                Console.WriteLine("Run away~~");
            else
                Console.WriteLine("Attack the lion !");
        }

    }
}
再设计一个lion类:
[C#] 纯文本查看 复制代码
{
    //定义Lion类
    class Lion
    {
        //函数:反击
        public void Counterattack()
        {
            Console.WriteLine("狮子反击!");
            if (Wolf.wolfCount <= 7)
                Console.WriteLine("The lion win!");
            else
                Console.WriteLine("The wolfs win!");
        }
    }
}
好了,我们在主函数中让狼和狮子开始战斗吧。
[C#] 纯文本查看 复制代码
 class Program
    {
        static void Main(string[] args)
        {
            Lion lion = new Lion();
            Wolf[] wolves = new Wolf[5];
            for (int i = 0; i < wolves.Length; i++)
            {
                wolves[i] = new Wolf();
            }
                Console.WriteLine("我们现在共有{0}只狼", Wolf.wolfCount);
            for (int i = 0; i < wolves.Length; i++)
            {
                Console.Write("Wolf{0}:", i);
                wolves[i].Act();
            }
            lion.Counterattack();
        }

    }
    
}
运行结果如何? 狼和狮子.JPG


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2014-7-14 05:05:54 | 显示全部楼层
本帖最后由 wwwconsumer 于 2014-7-14 05:16 编辑

关于如何创建和使用类,对于新手来说,可能比较困惑,我先要申明一下:首先要新建一个项目,我这里用的是visual studio 2010,其实任何版本如2005、2008都可以的。 新建项目.JPG 在创建项目时,首先要建立一个主程序,一般在创建项目的对话框中选择“控制台应用程序”,然后你可以为这个项目设计一个名字,我这里取名为wolfandlion.建图: 创建项目主程序.JPG 创建之后,我们可以在主程序界面看到如下: 主程序创建后.JPG ,嗯,这时有了一个Program.cs的主程序。然后再新建类。在栏目“项目”菜单中选择“添加类”,见图: 添加类.JPG 然后,给类取个名称,我们取名为wolf, 新建类wolf.JPG ,然后在设计wolf类,当然,你也可以直接选择复制我的代码黏贴上去也行。wolf类建好之后再设计一个lion类,方法同上。最后,将狼与狮子的战斗程序放在主程序Program.csZ中运行就可以了。 wolfandlion完成.JPG
 楼主| 发表于 2014-7-14 05:29:24 | 显示全部楼层
我们在主程序中设计的是5只狼与一只狮子在战斗,结局是狮子赢了,那么我们再增加一只狼也可以的,在哪里改?嗯,就在这里,
[C#] 纯文本查看 复制代码
Lion lion = new Lion();
            Wolf[] wolves = new Wolf[5];

把其中的5改为6,7,8后,在按ctrl+f5后看看运行结果如何?6,7只狼还不是狮子的对手,8只狼就不一样了。 狼赢了.JPG 为什么会这样呢?原来在Lion类中有这样一句话:
[C#] 纯文本查看 复制代码
 public void Counterattack()
        {
            Console.WriteLine("狮子反击!");
            if (Wolf.wolfCount <= 7)
                Console.WriteLine("The lion win!");
            else
                Console.WriteLine("The wolfs win!");
        }
明白了吧,8只狼才能战胜狮子!当然,你也可以自己改改试试!
发表于 2014-7-14 11:20:49 | 显示全部楼层
我只是路过看看的。
 楼主| 发表于 2015-5-24 00:45:41 | 显示全部楼层
本帖最后由 wwwconsumer 于 2015-5-24 00:48 编辑

[C#] 纯文本查看 复制代码
class Program
    {
        static void Main(string[] args)
        {
            Lion lion = new Lion();
            Wolf[] wolves = new Wolf[5];
            for (int i = 0; i < wolves.Length; i++)
            {
                wolves[i] = new Wolf();
            }
                Console.WriteLine("我们现在共有{0}只狼,[color=Red]Wolf.wolfCount[/color]);
            for (int i = 0; i < wolves.Length; i++)
            {
                Console.Write("Wolf{0}:", i);
                wolves[i].Act();
            }
            lion.Counterattack();
        }
 
    }
     
}

红色的就是静态变量,使用静态成员不需要申明对象,直接使用类名.没有用static关键字修饰的变量称为实例变量,实例变量需要通过对象名引用。
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-9-8 10:44

© 2014-2021

快速回复 返回顶部 返回列表