【发布时间】:2015-11-09 11:16:14
【问题描述】:
对于我一直在阅读的内容,使用另一个类,我将能够将索引添加到属性中。但我无法实现自定义“投票”类的“选项 [x]”属性的获取/设置。
public class Poll
{
//Constructor
public Poll() { }
//Properties
public string Title
{
get { return title; }
set { title = value; }
}
public Options Option { get; set; }
private string title;
}
public class Options
{
string[] option = { };
public string this[int i]
{
get { return option[i]; }
set { option[i] = value; }
}
}
当我尝试将第一个选项添加到投票时,它说对象(“选项”)尚未被实例化。这确实是有道理的。但我不知道在 Poll 中我会在哪里实例化它。
那么,谁能解释一下我做错了什么?我是否遵循正确的方向?或指向我进一步阅读。对于我所看到的解决方案,这个对我来说似乎是最合乎逻辑的,但只是一个小的原始示例,细节很少。
我不想按照字典 (Implementing indexing "operator" in on a class in C#) 的方式,或者“选项”属性返回字符串列表。
【问题讨论】:
-
你的构造函数应该初始化属性。
-
即使您将
Option设置为Options的实例,索引器也将始终抛出IndexOutOfRangeException,因为option数组始终是一个空数组。 -
public Poll() { Option = new Options()} -
感谢您快速简洁的回答。三个 cmets 都是正确的。问题已经解决了。这个问题我现在该怎么办?