C# 为什么我的索引器不工作?
索引器允许对类或结构的实例进行索引,就像 数组。索引器与属性相似,只是它们的访问器采用 参数 我有这样的代码C# 为什么我的索引器不工作?,c#,indexer,C#,Indexer,索引器允许对类或结构的实例进行索引,就像 数组。索引器与属性相似,只是它们的访问器采用 参数 我有这样的代码 class StudentMemento { Student student; public Student this[int index] { get { return student; } set { student = new Student { time = DateTime.
class StudentMemento
{
Student student;
public Student this[int index]
{
get { return student; }
set { student = new Student { time = DateTime.Now }; }
}
}
class Client
{
static void Main()
{
StudentMemento s = new StudentMemento();
Student s1 = s[1];
Student s2 = s[2];
Student s3 = s[1];
Console.Read();
}
}
根据msdn中的文档,我应该在以下成员s1、s2中获得Student的实例,因为我在索引器中返回Student int的对象,但我得到的是空引用。谁能帮我理解,为什么会这样。谢谢之后
StudentMemento s = new StudentMemento();
s、 学生将被
null
。student
字段仅在索引设置器中分配,因此您需要在调用getter之前调用该字段,例如
StudentMemento s = new StudentMemento();
s[1] = null;
Student s1 = s[1];
Student s2 = s[2];
Student s3 = s[1];
在调用setter之前,
student
字段不会被分配,而您在Main
中没有这样做。您需要一个students@mcNets我试图理解Indexer的工作原理,但当我设置s[1]=null时,s1得到一个Student()对象。但是当我没有在s[2]@LijinJohn上调用setter时,变量s2是如何得到值的?只有一个支持字段,您的索引器根本不使用index
参数。