Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在静态构造函数中初始化泛型集合时发生c TypeInitializationException_C#_Constructor_Static - Fatal编程技术网

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

C# 在静态构造函数中初始化泛型集合时发生c TypeInitializationException,c#,constructor,static,C#,Constructor,Static,在运行这段代码时,我在第9行遇到一个System.TypeInitializationException异常,我试图在类的静态构造函数中填充一个泛型列表 using System; using System.Collections.Generic; namespace ConsoleApplication5_static_constructor { public static class DataRepository { public static List<De

在运行这段代码时,我在第9行遇到一个System.TypeInitializationException异常,我试图在类的静态构造函数中填充一个泛型列表

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的内部异常 静态构造函数不能初始化新对象吗?

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

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

public static List<DefinedField> Tables = new List<DefinedField>();
静态属性表未初始化。它显示为TypeInitializationException,因为该异常在静态构造函数中触发。因此,初始化DataRepository类型时会发生异常

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

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

哦,谢谢!!!-要等几分钟才能接受这个答案:哦,谢谢!!!-要等几分钟才能接受这个答案:通常,当你遇到你不理解的异常时,看看InnerException。这将是一个NullReferenceException,它将告诉您原因。谢谢,下次我会记住这一点。我很高兴你们这么快就帮了我。事实上,我花了一段时间才弄明白这一点,可能是因为我更习惯于编写pythonscripts@CathalMF一般来说是的,但是当异常发生在静态构造函数中时就不会发生了。@Maarten我自己重新创建了它,它在InnerException中有一个NullReferenceException通常当你得到你不理解的异常时,看看InnerException。这将是一个NullReferenceException,它将告诉您原因。谢谢,下次我会记住这一点。我很高兴你们这么快就帮了我。事实上,我花了一段时间才弄明白这一点,可能是因为我更习惯于编写pythonscripts@CathalMF通常是的,但当异常发生在静态构造函数中时就不是了。@Maarten我自己重新创建了它,它在InnerException中有一个NullReferenceException