C# 在静态构造函数中初始化泛型集合时发生c TypeInitializationException
在运行这段代码时,我在第9行遇到一个System.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
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