我在Java中发现了一些相关的问题,但没有发现任何C#,所以请原谅任何重复。初始化默认构造函数或内联变量之间有区别吗?
短而甜,最新的区别?有没有?
public static class Foo
{
public static List<Bar> Bars;
static Foo()
{
Bars = new List<Bar>();
}
}
public static class Foo
{
public static List<Bar> Bars = new List<Bar>();
}
请参阅@Nick G对非静态类的回答。我仍然想知道它是否对静态类有不同的影响。
现在他们不一定是静态的。这个案子呢?
public class Foo
{
public List<Bar> Bars;
public Foo()
{
Bars = new List<Bar>();
}
}
public class Foo
{
public List<Bar> Bars = new List<Bar>();
}
根据[this](http://jonskeet.uk/csharp/constructors.html),区别在于实例初始化器先运行,然后构造函数运行。文档[静态字段初始化](https://msdn.microsoft.com/en-us/library/aa645758(v = vs.71).aspx)和[实例字段初始化](https://msdn.microsoft .com/en-us/library/aa645759(v = vs.71).aspx)都表示字段在构造函数之前被初始化。另请阅读[这里](https://blogs.msdn.microsoft.com/ericlippert/2008/02/15/why-do-initializers-run-in-the-opposite-order-as-constructors-part-one/ )为继承信息。 – Quantic
我不认为这完全回答你的静态问题,但可能有所帮助:http://csharpindepth.com/Articles/General/Beforefieldinit.aspx –
检查此[文章](http://csharpindepth.com/Articles/General /Beforefieldinit.aspx)对静态构造函数的存在有一点意义。 – Rafal