Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1721387
  • 博文数量: 171
  • 博客积分: 11553
  • 博客等级: 上将
  • 技术积分: 3986
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-25 20:28
文章分类

全部博文(171)

文章存档

2012年(2)

2011年(70)

2010年(9)

2009年(14)

2008年(76)

分类: C/C++

2008-03-23 20:05:50

静态成员的使用方法

using System;

///



/// Summary description for Class1

///


public class StaticTest
{
    public StaticTest()
    {
        currentValue = 0;
        //统计当前有多少个实例

        staticCount++;
    }
    //static成员的一个用法:

    //显示当前有多少个StaticTest实例,在构造函数中将计数加1;在析构函数中将计数减1

    public static void HowManyStaticTest()
    {
        Console.WriteLine("Num of StaticTest is {0}", staticCount);
    }
    ~StaticTest()
    {
        staticCount--;
    }
    //静态构造函数

    static StaticTest(/**/)
    {
        currentValue = 50;
        Console.WriteLine("currentValue of StaticTest = {0}", currentValue);
    }
    //打印当前值

    static public void PrintValue()
    {
        Console.WriteLine("StaticTest.currentValue = {0}", currentValue);
    }
    //设置当前值

    static public void SetValue(int value)
    {
        currentValue = value;
    }
    //获取当前值

    static public int GetValue()
    {
        return currentValue;
    }
    public static void test()
    {
        //显示当前的实例个数

        StaticTest.HowManyStaticTest();
        //静态成员及静态函数的使用方法

        StaticTest.SetValue(20);
        Console.WriteLine("StaticTest.currerntValue = {0}", StaticTest.GetValue());
        new StaticTest();
        {
            new StaticTest();
            StaticTest.HowManyStaticTest();
        }
        new StaticTest();
        StaticTest.HowManyStaticTest();
        /*******************************************************************
        * 静态方法不允许使用实例类型进行调用,必须使用class
        * StaticTest stInstance = new StaticTest();
        * stInstance.SetValue(20);
        *******************************************************************/


    }
    //初始化当前值为10

    static int currentValue = 10;
    static int staticCount = 0;

}

class DisposeTest : IDisposable
{
    public DisposeTest()
    {
        Count++;
    }
    public void Dispose()
    {
        Count--;
        GC.SuppressFinalize(this);
    }
    public static void HowManyDisposeTest()
    {
        Console.WriteLine("Num of DisposeTest is {0}", Count);
    }
    
    public static void test()
    {
        //使用Dispose,跟踪对象销毁

        DisposeTest.HowManyDisposeTest();
        new DisposeTest();
        DisposeTest.HowManyDisposeTest();
        //跳出这个using作用域后,将会调用Dispose函数

        using (new DisposeTest())
        {
            //新创建一个,此时的计数应为

            DisposeTest.HowManyDisposeTest();
        }
        //using使用域中的一个Dispose对象被销毁了

        DisposeTest.HowManyDisposeTest();
        new DisposeTest();
        DisposeTest.HowManyDisposeTest();

    }
    //当前实例的个数

    private static int Count = 0;

}


文件:StaticTest.rar
大小:0KB
下载:下载
构造函数的重载,赋值构造函数

using System;

///



/// Summary description for Class1

///


public class Text
{
    /************************************************************************
     * 功能
     * 默认构造函数
     * **********************************************************************/

    public Text()
    {
        appName = null;
    }
    /************************************************************************/
    /* 功能
     * 重载构造函数,使用一个字符串参数进行初始化appName
     * 参数
     * 指定App的名称
     */

    /************************************************************************/
    public Text(string name)
    {
        appName = name;
    }
    /************************************************************************
     * 功能:复制构造函数
     * 创建对象时,如果其参数为另一个已经存在的对象,则调用此函数
     * 参数
     * 已存在的Text对象
     * **********************************************************************/

    public Text(Text existText)
    {
        appName = existText.appName;
        appCount = existText.appCount;
    }
    /************************************************************************/
    /* 功能
     * 显示当前文本内容
    /************************************************************************/

    public void DisplayText()
    {
        Console.WriteLine("appName = {0}",appName);
        Console.WriteLine("appCount = {0}", appCount);
    }
    //测试构造函数的用法

    public static void test()
    {
        //默认构造函数

        Text appName = new Text();
        appName.DisplayText();
        //带有一个string参数的构造函数

        Text appNameParam = new Text("appNameParam");
        appNameParam.DisplayText();
        //复制构造函数

        Text appNameCopy = new Text(appNameParam);
        appNameCopy.DisplayText();
    }
    private string appName;
    //在成员声明时进行初始化,C++不允许这样使用.

    private int appCount = 30;

}


文件:Text.rar
大小:0KB
下载:下载
使用静态函数模拟全局函数

using System;

///



/// Summary description for Class1

///


public class Tools
{
    //将构造函数设置为private,仅使用这个类的static函数

    //不允许创建这个类的实例

    private Tools()
    {
        //

        // TODO: Add constructor logic here

        //

    }
    //显示系统时间

    public static void DisplayTime()
    {
        Console.WriteLine(System.DateTime.Now);
    }

}


文件:Tools.rar
大小:0KB
下载:下载
参数的输出

using System;

///



/// Summary description for Class1

///


public class RefOut
{
    public RefOut()
    {
        //

        // TODO: Add constructor logic here

        //

    }
    //使用ref输出参数

    public void GetNumRef(ref int pNum)
    {
        //ref允许使用pNum,如下的方法正确

        Console.WriteLine("pNum = {0}", pNum);
        pNum = nNum;
    }
    //使用out输出参数

    public void GetNumOut(out int pNum)
    {
        //out不允许使用pNum,如下的使用方法出错!!!!

        //Console.WriteLine("pNum = {0}", pNum);

        pNum = nNum;
    }

    //测试参数输出

    public static void test()
    {
        RefOut ro = new RefOut();
        int nNum = 0;
        ro.GetNumRef(ref nNum);
        Console.WriteLine("nNum = {0}", nNum);
        nNum = 0;
        ro.GetNumOut(out nNum);
        Console.WriteLine("nNum = {0}", nNum);
    }
    private int nNum = 10;
}


文件:RefOut.rar
大小:0KB
下载:下载
属性的设置与获取

using System;

///



/// Summary description for Class1

///


public class Property
{
    public Property()
    {
        //

        // TODO: Add constructor logic here

        //

    }
    //创建一个属性,这个属性的获取方法将是原来值的2倍;

    //设置方法是传入参数的2倍

    public int Num
    {
        //设置属性,value为关键字

        set
        {
            nNum = 2 * value;
        }
        //获取属性

        get
        {
            return nNum * 2;
        }
    }
    public void Print()
    {
        Console.WriteLine("nNum = {0}", nNum);
    }

    public static void test()
    {
        Property pt = new Property();
        pt.Num = 20;
        Console.WriteLine("pt.Num = {0}", pt.Num);
    }
    private int nNum = 10;
}


文件:Property.rar
大小:0KB
下载:下载
阅读(1602) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~