【发布时间】:2012-02-20 09:46:12
【问题描述】:
我偶然发现了一个问题,我需要在其静态构造函数中创建一个类的实例。我认为这是不可能的,所以我尝试了以下方法:
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Foo.someString);
Console.ReadLine();
}
}
class Foo
{
public static readonly string someString;
static Foo()
{
someString = new Foo().CreateString();
}
private string CreateString()
{
return "some text";
}
}
令我惊讶的是,它有效 - 输出是“一些文本”。我相信静态构造函数必须在创建类的实例之前运行并完成。 This answer 表明情况并非如此。这是否意味着静态和实例构造函数是相互独立的?最后,这样做是否安全(在静态构造函数中创建实例)?
附言让我们忽略这样一个事实,即通过使用不同的方法可以避免这种情况。
【问题讨论】:
标签: c#