可以在C#中创建索引器,但是像这样:
public class MyClass
{
Dictionary<int, string> myCollection = new Dictionary<int, string>();
public string Value[int i]
{
get { return myCollection[i]; }
set { myCollection[i] = value; }
}
}
由于
答案 0 :(得分:1)
不,C#
不允许这样做。
规范部分1.6.7.3说:
索引器是一个允许对象在其中编入索引的成员 作为一个数组的方式。索引器被声明为属性,除了 成员的名称是后跟写入的参数列表 在分隔符之间[和]。
我建议你使用简单的方法:
public string GetValue(int key)
{
if (dictionary.ContainsKey(key))
.....
}
在你的情况下,你需要key
而不是index
来提供字典项目,这是非常不同的事情。
PS:请记住,词典不会保留项目的顺序,这对某些情况可能至关重要!
答案 1 :(得分:1)
不,
实际上你的属性Value
已经有来自string的索引器并返回char。可能你需要这样的东西:
public class MyClass
{
Dictionary<int, string> myCollection = new Dictionary<int, string>();
public Dictionary<int, string> Value
{
get { return myCollection; }
set { myCollection = value; }
}
}
这将是你所期望的行为。
string value = myClassInstance.Value[0];
答案 2 :(得分:0)
你不能那样做(不受C#支持)
如何改为
public class MyClass
{
public MyClass()
{
Values = new Dictionary<int, string>()
}
public Dictionary<int, string> Values { get; set }
}
然后允许你做
MyClass foo = new MyClass();
var someVal = foo.Values[3];