本节课将介绍C#中的类,其目的如下:
1.
了解构造函数的实现
2.
了解实例和静态成员的区别
3.
了解析构函数的使用
4.
熟悉类的成员类型

   
在本教程的一开始,你就已经接触到类的用法了。现在,既然已经对类有了感性认识,并知道如何定义一个类,本节课将定义类的格式是:关键字"Class"后面跟着类名,类名之后的大括号中包含的是类的成员。构造函数没有返回值,且与类同名。清单7-1是一个关于类的例子。

清单 7-1. Example C# Classes: Classes.cs

 

using System;

class OutputClass

{   string myString;

    public OutputClass(string inputString) // Constructor

    {

        myString = inputString;

    }

    // Instance Method

    public void printString()

    {

        Console.WriteLine("{0}", myString);

    }

    // Destructor

    ~OutputClass()

    {

        // Some resource cleanup routines

    }

    // static Method

   static void staticPrinter() {
Console.WriteLine("There is static.");

}

}

class ExampleClass

{

    // Main begins program execution.

    public static void Main() {

        // Instance of OutputClass

        OutputClass outCl = new OutputClass("This is printed by the output class.");

        // Call Output class' method

        outCl.printString();//实例调用

        OutputClass.StaticPrintString(); //静态方法调用

    }

}

 

 

说明


1.
清单7-1 演示了两个类。第一个类"OutputClass"包括:一个构造函数,一个实例方法,一个静态方法,以及一个析构函数,还包括一个域名"myString"。构造函数是用来初始化类的数据成员的。本例中,OutputClass类的构造函数接收一个字符串参数,并把它拷贝到该类的myString域中。

2.构造函数并不是一定要用户自己定义的,例如ExampleClass类就用到了缺省的构造函数。缺省的构造函数很简单,且不带参数。但这样的构造函数并没有多大用处。要想构造函数有用,必须给构造函数设置参数,并且,一个类可以有多种格式的构造函数。

类成员的类型在C#中,有两种类型的类成员,实例和静态的。每次定义类的对象时,就创建了该类的一个实例。ExampleClass中的 Main() 方法创建了OutputClass类的一个名为"outCl"的实例。你可以用不同的名字创建OutputClass类的多个实例。这些实例都是各自独立的。例如,OutputClass类的两个实例创建如下:

OutputClass oc1 = new OutputClass("OutputClass1");
OutputClass oc2 = new OutputClass("OutputClass2");


于是,创建了OutputClass类的两个单独的实例,且各自带有单独的"myString"域和"printString()"方法。上例中,两个实例 名为"oc1" "oc2"

另外一方面,如果类成员是静态的,可以通过如下格式来访问: <classname>.<static class member>

一旦OutputClass类有如下的静态方法:


static void staticPrinter() {
Console.WriteLine("There is only one of me.");
}
你就可以用下面的方式,从Main()中调用该函数:
OutputClass.staticPrinter();

 

注意:

调用类的静态成员必须通过类名而不是实例名。类的静态成员的副本仅有一个。
另外一种类型的构造函数是静态构造函数。


OutputClass
也有一个析构函数,除了前面加上了"~"符号,就跟构造函数的格式一样。析构函数用于释放类所占用的资源。当C#垃圾搜集器决定把对象从内存中清除出去时,就会调用析构函数。并且根据现代的垃圾处理机制,在C#中除了极少数需要显著析构外,大家不必关系析构函数,大可以放心的new 新的对象,这一点和C是不一样的。当然,如果你对程序很讲究,并且非常注重效率和内存的使用,可以写自己个性化的析构函数。JAVAC#都是非常高级的编程语言,里面的垃圾回收机制,是程序易写,且更加健壮。

小结
现在,你已经了解了类的如下成员:域,方法,构造函数,析构函数。下面是类的完整的成员类型:

构造函数;析构函数;域;方法;属性;索引;代理 ;事件;嵌套类

上面没有介绍过的类型将在后续课程中讲解。

概括地讲,你现在已经学会了如何定义常规的和静态的构造函数,也了解了如何初始化类的域。如果没有必要实例化一个对象,可以创建静态的类成员。你也了解了用来释放资源的析构函数的用法。

posted on 2009-10-07 20:25  qqhfeng16  阅读(696)  评论(0)    收藏  举报