C# 为什么我不能将此对象添加到此列表中?
我是C语言的新手,在尝试将对象插入集合时遇到以下问题 因此,我有一个名为VulnSmall的基类,它包含一些属性,然后我有一个名为Vuln的类,它扩展了以前的VulnSmall类,并向其中添加了一些属性,包括名为VulnerabilityReferences的列表,如以下代码段所示:C# 为什么我不能将此对象添加到此列表中?,c#,C#,我是C语言的新手,在尝试将对象插入集合时遇到以下问题 因此,我有一个名为VulnSmall的基类,它包含一些属性,然后我有一个名为Vuln的类,它扩展了以前的VulnSmall类,并向其中添加了一些属性,包括名为VulnerabilityReferences的列表,如以下代码段所示: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threadin
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DataModel.Vulnerability
{
public class Vuln : VulnSmall
{
.......................
.......................
.......................
public virtual List<VulnerabilityReference> VulnerabilityReferences { get; set; }
.......................
.......................
.......................
}
}
如您所见,我有一个名为currentNVDVuln的Vuln对象,其中包含VulnerabilityReferences列表作为其字段,我创建了一个名为currentVulnRef的VulnerabilityReference对象,并尝试将其添加到此列表中
但不工作,当尝试执行此行时:
currentNVDVuln.VulnerabilityReferences.Add(currentVulnRef);
它将出错并引发此异常:
{对象引用未设置为对象的实例。}
System.Exception{System.NullReferenceException}
为什么??有什么问题吗?我缺少什么?您应该初始化VulnerabilityReference,如果您在构造函数中这样做会更好:
public class Vuln : VulnSmall
{
public Vuln()
{
VulnerabilityReferences = new List<VulnerabilityReference>();
}
}
您应该初始化VulnerabilityReference,最好在构造函数中进行初始化:
public class Vuln : VulnSmall
{
public Vuln()
{
VulnerabilityReferences = new List<VulnerabilityReference>();
}
}
您没有初始化漏洞引用列表。所以它有空值,当您试图调用它的Add方法时,它抛出异常。您可以在Vuln类的构造函数中创建新列表:
从具有自动实现属性的C规范中,您仍然有字段,但它是由编译器为您生成的:
字段的初始值,无论是静态字段还是静态字段
实例字段,是该字段的
类型
列表是引用类型,因此默认情况下它的值为null。您没有初始化VulnerabilityReferences列表。所以它有空值,当您试图调用它的Add方法时,它抛出异常。您可以在Vuln类的构造函数中创建新列表:
从具有自动实现属性的C规范中,您仍然有字段,但它是由编译器为您生成的:
字段的初始值,无论是静态字段还是静态字段
实例字段,是该字段的
类型
列表是引用类型,因此默认情况下它的值为null。在Vulnclass的构造函数中,您需要执行以下操作:
public Vuln()
{
VulnerabilityReferences = new List<VulnerabilityReference>();
}
在Vulnclass的构造函数中,您需要执行以下操作:
public Vuln()
{
VulnerabilityReferences = new List<VulnerabilityReference>();
}
您正在尝试向列表中添加尚不存在的内容 仅定义列表属性是不够的,还必须初始化它。例如:
public class Vuln : VulnSmall
{
public virtual List<VulnerabilityReference> VulnerabilityReferences { get; set; }
public Vuln()
{
this.VulnerabilityReferences = new List<VulnerabilityReference>();
}
}
您正在尝试向列表中添加尚不存在的内容 仅定义列表属性是不够的,还必须初始化它。例如:
public class Vuln : VulnSmall
{
public virtual List<VulnerabilityReference> VulnerabilityReferences { get; set; }
public Vuln()
{
this.VulnerabilityReferences = new List<VulnerabilityReference>();
}
}
由于对列表的引用为null,因此会出现null引用异常。您只有列表的引用,您必须在某个点创建实际列表:
VulnerabilityReferences = new List<VulnerabilityReference>();
例如,您可以在类的构造函数中执行此操作:
public class Vuln : VulnSmall {
public virtual List<VulnerabilityReference> VulnerabilityReferences { get; set; }
public Vuln(){
VulnerabilityReferences = new List<VulnerabilityReference>();
}
}
由于对列表的引用为null,因此会出现null引用异常。您只有列表的引用,您必须在某个点创建实际列表:
VulnerabilityReferences = new List<VulnerabilityReference>();
例如,您可以在类的构造函数中执行此操作:
public class Vuln : VulnSmall {
public virtual List<VulnerabilityReference> VulnerabilityReferences { get; set; }
public Vuln(){
VulnerabilityReferences = new List<VulnerabilityReference>();
}
}
您应该创建一个列表以将项目插入:
...
currentNVDVuln.VulnerabilityReferences = new List<VulnerabilityReference> VulnerabilityReferences();
currentNVDVuln.VulnerabilityReferences.Add(currentVulnRef);
您应该创建一个列表以将项目插入:
...
currentNVDVuln.VulnerabilityReferences = new List<VulnerabilityReference> VulnerabilityReferences();
currentNVDVuln.VulnerabilityReferences.Add(currentVulnRef);
调试器呢?您是否尝试过调试的异常可能重复顺便问一下,为什么该属性是虚拟的?调试器呢?你试过调试的例外可能重复顺便问一下,为什么该属性是虚拟的?