c#TypeInitialization在静态构造函数中初始化泛型集合时发生异常

时间:2016-04-15 08:07:59

标签: c# constructor static

运行此代码时,我在第9行收到System.TypeInitializationException异常,我尝试在class'static constuctor中填充泛型列表。

using System;
using System.Collections.Generic;

namespace ConsoleApplication5_static_constructor {
    public static class DataRepository {
        public static List<DefinedField> Tables;
        static DataRepository() {
            Console.WriteLine("static DataRepository constructor fired");
            Tables.Add(new DefinedField("ID"));  **//this is line 9**
        }
    }

    public class DefinedField {
        string _tableName;
        public DefinedField(string tableName) {
        _tableName = tableName;
    }

        public string TableName {
            get { return _tableName; }
            set { _tableName = value; }
        }

    }
}

致电代码:

using System.Collections.Generic;

namespace ConsoleApplication5_static_constructor {
    class Program {
        static void Main(string[] args) {
            List<DefinedField> x = DataRepository.Tables;
        }
    }
}

究竟是什么原因导致错误,我该如何解决呢?

编辑:还有NullReferenceException类型的内部异常 静态构造函数是否无法初始化新对象?

1 个答案:

答案 0 :(得分:4)

您的静态属性Tables未初始化。它显示为TypeInitializationException,因为异常是在静态构造函数中触发的。因此,在初始化类型DataRepository时会发生异常。

解决方案是将其设置为空列表。

public static List<DefinedField> Tables = new List<DefinedField>();