2010-08-01 49 views
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对象并创建它的类型。告诉我在下列情况下的执行流程

}

回答

0

将首先调用静态ctor。
然后值列表将是秒和ctor。
阅读关于beforefieldinit here

+0

ex。如果我创建一个Temp类的对象为 Temp obj = new Temp(); 列表对象将包含什么。 因为它是通用的,它会包含空值吗? 请建议 – 2010-08-01 20:26:03

+0

它不会包含任何值。检查Count属性。另请阅读本文档以了解链接列表是什么:http://cslibrary.stanford.edu/103/LinkedListBasics.pdf 如果没有值,List对象本身不为null。 它只是指向null。 – 2010-08-01 20:48:38

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:

静态字段初始
静态构造函数
字段初始
一般构造

[编辑]

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

相关问题