C# 在c中向对象中的列表添加对象#
我正在尝试向c中的对象添加一个字符串,如下所示: 课程为:C# 在c中向对象中的列表添加对象#,c#,C#,我正在尝试向c中的对象添加一个字符串,如下所示: 课程为: class thing { public int somenumber { get; set; } public int someothernumber { get; set; } public List<string> words { get; set; } } 如何将字符串添加到列表“words”中而不出现null引用错误?您必须首先创建一个列表,因为默认情况下words将为null var s
class thing
{
public int somenumber { get; set; }
public int someothernumber { get; set; }
public List<string> words { get; set; }
}
如何将字符串添加到列表“words”中而不出现null引用错误?您必须首先创建一个列表,因为默认情况下
words
将为null
var something = new thing();
something.words = new List<string>();
现在当something.words
指向新创建的列表时,不会为空
另一种更一致的方法是在类构造函数中创建该列表:
public class Thing
{
public int SomeNumber { get; set; }
public int SomeOtherNumber { get; set; }
public List<string> Words { get; set; }
public Thing()
{
Words = new List<string>();
}
}
公共类的东西
{
公共int SomeNumber{get;set;}
公共int SomeOtherNumber{get;set;}
公共列表字{get;set;}
公共事物
{
单词=新列表();
}
}
顺便说一句,请同时查看命名约定(例如,属性名称以大写字母开头以及类名)
更新
正如他在评论中正确提到的,还有另一种方法(可能更好)来做同样的事情:
public class Thing
{
public int SomeNumber { get; set; }
public int SomeOtherNumber { get; set; }
public List<string> Words { get; } = new List<string>();
}
公共类的东西
{
公共int SomeNumber{get;set;}
公共int SomeOtherNumber{get;set;}
公共列表单词{get;}=new List();
}
这样,我们就创建了一个只读列表。基本上,当我们创建此类的实例时,会创建一个新的字符串列表,并将其引用分配给单词backing字段。从那一刻起,您就不能更改存储在该支持字段中的引用,您只能将列表用于添加/删除内容,您不能更改它的引用。您必须首先创建一个列表,因为默认情况下
单词
将为空
var something = new thing();
something.words = new List<string>();
现在当something.words
指向新创建的列表时,不会为空
另一种更一致的方法是在类构造函数中创建该列表:
public class Thing
{
public int SomeNumber { get; set; }
public int SomeOtherNumber { get; set; }
public List<string> Words { get; set; }
public Thing()
{
Words = new List<string>();
}
}
公共类的东西
{
公共int SomeNumber{get;set;}
公共int SomeOtherNumber{get;set;}
公共列表字{get;set;}
公共事物
{
单词=新列表();
}
}
顺便说一句,请同时查看命名约定(例如,属性名称以大写字母开头以及类名)
更新
正如他在评论中正确提到的,还有另一种方法(可能更好)来做同样的事情:
public class Thing
{
public int SomeNumber { get; set; }
public int SomeOtherNumber { get; set; }
public List<string> Words { get; } = new List<string>();
}
公共类的东西
{
公共int SomeNumber{get;set;}
公共int SomeOtherNumber{get;set;}
公共列表单词{get;}=new List();
}
这样,我们就创建了一个只读列表。基本上,当我们创建此类的实例时,会创建一个新的字符串列表,并将其引用分配给单词backing字段。从那一刻起,您不能更改存储在该备份字段中的引用,您只能将列表用于添加/删除内容,您不能更改它的引用
words
列表,以确保它将存在words
列表,以确保它将存在单词是空的。您必须通过调用构造函数来初始化它
something.words=newlist()代码>这是否回答了您的问题?单词是空的。您必须通过调用构造函数来初始化它something.words=newlist()代码>这是否回答了您的问题?我怀疑更好的实现应该是publicslist单词{get;}=newlist()
(因此不能有人来将单词设置为空)。我同意,我也将添加此项。ThanksI怀疑更好的实现是公共列表单词{get;}=new List()
(因此不能有人来将单词设置为空)。我同意,我也将添加此项。谢谢
public void YourMethod {
words.Add("New Item");
}