类内的clsss,空引用异常,C#
我的班级看起来像这样类内的clsss,空引用异常,C#,c#,C#,我的班级看起来像这样 public class LogSettings { public string attributeName { get; set; }//TODO: change the variable name public Warnings[] warnings = new Warnings[3]; } public class Warnings { public string typeOfWarning {get; set;} public b
public class LogSettings
{
public string attributeName { get; set; }//TODO: change the variable name
public Warnings[] warnings = new Warnings[3];
}
public class Warnings
{
public string typeOfWarning {get; set;}
public bool isAbsolute { get; set; }
public decimal numUpDownValue { get; set; }
public LogSettingActions[] actionItems = new LogSettingActions[10];
}
public class LogSettingActions
{
public string actionItem{ get; set;}
}
但当我尝试创建Warnings实例时,它会抛出NullReference错误
var rows = FindChilds<ctlLogConfigRow>(lvLogConfigTemplate);
foreach (var row in rows)
{
LogSettings instance = new LogSettings();
instance.attributeName = row.GroupHeaderText;
var allWarnings = FindChilds<ctlWarnings>(row);
for (int i = 0; i < allWarnings.Count; i++)
{
instance.warnings[i].typeOfWarning = allWarnings[i].ctlWarningGroupBoxFixedHeader1.Header.ToString();//It throws error here
var rows=FindChilds(lvLogConfigTemplate);
foreach(行中的变量行)
{
LogSettings实例=新的LogSettings();
instance.attributeName=row.GroupHeaderText;
var allWarnings=FindChilds(行);
对于(int i=0;i
有人能帮我吗?日志设置。警告已初始化为数组,但数组元素未初始化 考虑初始化LogSettings构造函数中的数组项:
public class LogSettings
{
public LogSettings()
{
warnings = new Warnings[3];
for (int i=0; i<warnings.Length; i++)
{
warnings[i] = new Warnings();
}
}
public string attributeName { get; set; }//TODO: change the variable name
public Warnings[] warnings;
}
公共类日志设置
{
公共日志设置()
{
警告=新警告[3];
对于(int i=0;i当您执行此操作时:
public Warnings[] warnings = new Warnings[3];
您创建了一个数组,其中包含3个警告对象(或者更确切地说是对它们的引用)的空间。它实际上并不创建警告。在这一行之后,警告[0]和所有其他警告一样为空。这一行不创建任何警告对象:
public Warnings[] warnings = new Warnings[3];
数组中的所有引用都已初始化为null。在尝试访问这些对象上的任何属性之前,您需要先实际创建一些对象:
for (int i = 0; i < warnings.Length; ++i) {
warnings[i] = new Warnings();
}
for(int i=0;i
在日志设置中,您可以初始化警告数组,但不能初始化数组的元素。您需要初始化每个元素
for (int i=0;i<3;i++)
warning[i] = new Warning();
对于(int i=0;i行:
public Warnings[] warnings = new Warnings[3];
仅创建数组,而不是数组中的对象。要在数组中创建警告的实例,请执行以下操作:
public Warnings[] warnings =
Enumerable.Repeat<Warnings>(new Warnings(), 3).ToArray();
公共警告[]警告=
可枚举。重复(新警告(),3)。ToArray();
同样适用于:
public LogSettingActions[] actionItems =
Enumerable.Repeat<LogSettingActions>(new LogSettingActions(), 10).ToArray();
公共日志设置操作[]操作项=
可枚举.重复(新的LogSettingActions(),10).ToArray();
必须爱LINQ。错误在哪里?哪一行?哪一行引发异常?哪一引用是null
?什么是null?实例?警告[i]
?所有警告[i]
?ctlWarningGroupBoxFixedHeader1
?Header
?您需要提供更多的信息…您需要添加更多的空检查。获取空引用异常的原因是某些内容实际上为空。您不是在创建新实例,而是在对象上分配了typeOfWarning值,但不是created@user781700字体以前试过什么?我告诉过你你做错了什么。我把它留给你去弄清楚如何做对。