在以下场景中告诉我执行流程

时间:2010-08-01 19:54:04

标签: c#-3.0

public class Temp
{
   List<T> values = new List<T>;

   static Temp()
   {
      System.Console.WriteLine("static constructor");
   }

   public Temp()
   {
      System.Console.WriteLine("general constructor");
   }
}

另外请解释我将在何时创建List对象以及创建它的类型。

}

2 个答案:

答案 0 :(得分:1)

首先初始化字段,然后调用静态构造函数,然后调用构造函数。

class Test
{
    string variable = new Func<string>(() =>
    {
        Console.WriteLine("field initializer");
        return "VARIABLE";
    })();

    static string staticvariable = new Func<string>(() =>
    {
        Console.WriteLine("static field initializer");
        return "STATICVARIABLE";
    })();

    static Test()
    {
        System.Console.WriteLine("static constructor");
    }

    public Test()
    {
        System.Console.WriteLine("general constructor");
    }
}

Test t = new Test();

outuput:

静态字段初始化程序
静态构造函数
现场初始化器
一般建设者

[编辑]

对不起,这是一个非静态字段,我没注意到它。

答案 1 :(得分:0)

首先调用静态ctor 然后值列表将是第二个和ctor 阅读beforefieldinit here