深入解析C#编程中的事件(3)

上一篇 / 下一篇  2008-04-22 21:11:43 / 个人分类:技术文章

私有构造函数
当一个类只声明了私有的构造函数时,其他类就不能从这个类派生或创建类的实例。私有构造函数通常用在只包含静态成员的类中。例如:

public class Trig
{
private Trig() {} // Prevent instantiation
public const double PI = 3.14159265358979323846;
public static double Sin(double x) {...}
public static double Cos(double x) {...}
public static double Tan(double x) {...}
}

Trig 类提供了一组相关的方法和常数,但没有被例示。因此,它声明了一个单独的私有构造函数。注意至少要必须声明一个私有构造函数来避免自动生成默认的构造函数(它通常有公共的访问性)。
可选的构造函数参数
构造函数的this(...) 形式通常用于与实现可选的构造函数参数的关联上。在这个例子中
class Text
{
 public Text(): this(0, 0, null) {}
 public Text(int x, int y): this(x, y, null) {}
 public Text(int x, int y, string s) {
// Actual constructor implementation
 }
}
前两个构造函数只是为丢失的参数提供了默认的数值。两个都使用了一个this(...)构造函数的初始化函数来调用第三个构造函数,它实际上做了对新实例进行初始化的工作。效果是那些可选的构造函数参数:
Text t1 = new Text(); // Same as Text(0, 0, null)
Text t2 = new Text(5, 10); // Same as Text(5, 10, null)
Text t3 = new Text(5, 20, "Hello");

析构函数
析构函数是一个实现破坏一个类的实例的行为的成员。析构函数使用析构函数声明来声明:
一个析构函数声明的标识符必须为声明析构函数的类命名,如果指定了任何其他名称,就会发生一个错误。
析构函数声明的主体指定了为了对类的新实例进行初始化而执行的语句。这于一个有void返回类型的实例方法的主体相关。
例子
class Test
{
 static void Main() {
A.F();
B.F();
 }
}
class A
{
 static A() {
Console.WriteLine("Init A");
 }
 public static void F() {
Console.WriteLine("A.F");
 }
}
class B
{
 static B() {
Console.WriteLine("Init B");
 }
 public static void F() {
Console.WriteLine("B.F");
 }
}

会产生或者是下面的输出:
Init A
A.F
Init B
B.F
或者是下面的输出:
Init B
Init A
A.F
B.F

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-07-24  
  12345
6789101112
13141516171819
20212223242526
2728293031  

数据统计

  • 访问量: 58546
  • 日志数: 24223
  • 建立时间: 2007-12-06
  • 更新时间: 2008-06-15

RSS订阅

Open Toolbar