【发布时间】:2017-03-19 23:35:23
【问题描述】:
以前我有一个 static TopUp() 方法,我想用 Baseclass 的静态构造函数替换它,因为它“只执行一次”,如 msdn 所述。
msdn: Static Constuctor
将派生类的初始化保留在构造函数中并只执行一次的任何解决方案?
class BaseClass<T>
{
static BaseClass()
{
for (byte i = 0; i < 2; i++)
{
var temp = new Junction<byte>[2] { new Level2<byte>(), new OtherLevel2<byte>() };
Program.myList.Add(temp);
}
Console.WriteLine("static BaseClass()");
}
}
abstract class Junction<T> : BaseClass<T> { }
sealed class Level2<T> : Junction<T> { }
sealed class OtherLevel2<T> : Junction<T> { }
class Program
{
internal static List<Junction<byte>[]> myList = new List<Junction<byte>[]>();
static Program()
{
BaseClass<object> callTheStaticMethod = new BaseClass<object>();
}
static void Main()
{
Console.WriteLine("myList.Count = " + myList.Count);
Console.ReadLine();
}
}
Output:
static BaseClass()
static BaseClass()
myList.Count = 4
【问题讨论】:
标签: c# arrays list constructor static