class Program
{
class Chair
{
public Array[] people { get; set; }
}
static void Main(string[] args)
{
var chr = new Chair();
if(chr.people.Length > 0) Console.WriteLine("got eeem");
}
我也试过这样做:
class Program
{
Chair chr { get; set; }
class Chair
{
public Array[] people { get; set; }
}
static void Main(string[] args)
{
var pr = new Program();
if(pr.chr.people.Length > 0) Console.WriteLine("got eeem");
}
我一直收到同样的错误:
对象引用未设置为对象的实例。
检查长度是否大于0时(最后我会添加它)。
为什么我不能检查它大于0?我以两种方式实例化而且都不起作用?
提前致谢!
答案 0 :(得分:2)
你还必须新建你的chr.people数组。最好在Chairs构造函数中
答案 1 :(得分:1)
你的人数组是空的
在主席
的构造函数中实例化它class Chair
{
public Chair()
{
people = new Array[0];
}
public Array[] people { get; set; }
}
或在检查长度之前检查是否为空。
if(chr.people != null && chr.people.Length > 0) Console.WriteLine("got eeem");
或者如果您使用最新的:
if (chr.people?.Length > 0) Console.WriteLine("got eeem");
答案 2 :(得分:1)
chr.people
为null(未定义)。您需要分配它,或在主席的代码中提供默认(空)数组。
class Chair
{
public Array[] people { get; set; }
public Chair()
{
people = new Array[0]; // instantiate here
}
}
现在,当您创建新的Chair
时,您将拥有一个空数组(您可以访问Length
属性)。
或者,您可以在实例化chr
时分配它:
Chair chr = new Chair();
chr.people = new Array[0];
// now you can access chr.people.Length
这里的关键点是数组的默认值(未明确定义时)(在本例中为Array[]
)为空,因此无法访问.Length
。您可以预料到这一点(首先检查.people != null
),或者在创建对象时初始化它。
答案 3 :(得分:1)
问题在于"人们"属性未初始化。你有几种方法。
if (chr.people !=null && chr.people.Length > 0) Console.WriteLine("got eeem");
或确保人员已初始化
public class Chair
{
public Chair()
{
people = new Array[0];
}
public Array[] people { get; set; }
}
第一种是典型的防御性编码。例如,如果有人chr.people=null;
问题是你没有在课堂上封装主席的担忧。这意味着使用椅子的所有东西都必须意识到它的局限性。主席课程的设计必须能够提供安全的界面并保护其资源(即人员财产)。
也许是这样的:
public class Chair
{
private List<Person> people = new List<Person>();
public IEnumerable<Person> People { get { return people; } }
public void AddPerson(Person person)
{
people.Add(person);
}
public void RemovePerson(Person person)
{
people.Remove(person);
}
public void ClearPeople(Person person)
{
people.Clear();
}
}
public class Person
{
public string Name { get; set; }
}
IEnumerable只允许像&#34; foreach&#34;因此,除非他们使用添加/删除/清除方法,否则没有人可以搞乱集合的内容。
你可以让人们成为一个名单&lt;人&GT;但你必须把所有东西暴露给你班上的消费者。