C#靜態(tài)構(gòu)造函數(shù)問題及解決方法
問題:在Student類的例子中,如果希望對象編號不是從1開始,而是從0到1000之間的隨機的數(shù)開始。
構(gòu)造函數(shù)中雖然可以執(zhí)行代碼,但每個對象創(chuàng)建時都執(zhí)行,而本例中只希望第一個對象創(chuàng)建時執(zhí)行。
解決:
C#中支持靜態(tài)構(gòu)造函數(shù),靜態(tài)構(gòu)造函數(shù)在類中第一個對象初始化或引用任何靜態(tài)成員之前執(zhí)行。
using System;
public class Student
{
public int serialNumber;
private static int counter;
static Student()
{
Random rand = new Random(0);
counter = rand.Next(0, 1000);
}
public Student()
{
serialNumber = counter;
counter++;
}
}
class MyApp
{
static void Main()
{
Student stu = new Student();
Console.WriteLine(stu.serialNumber);
Student stu1 = new Student();
Console.WriteLine(stu1.serialNumber);
}
}
點擊加載更多評論>>