索引器在c#中,但没有这个
本文关键字:索引 | 更新日期: 2023-09-27 18:10:07
可以在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; }
}
}
谢谢
不允许,C#
不允许。
规范第1.6.7.3节说:
索引器是一个成员,它使对象能够在同一对象中被索引作为一个数组。索引器的声明类似于属性,只是成员的名称是this,后面是一个参数列表在分隔符[和]之间。
我建议你使用简单的方法:
public string GetValue(int key)
{
if (dictionary.ContainsKey(key))
.....
}
在您的情况下,您通过key
而不是index
引用字典项,这是完全不同的事情。
PS:请记住,Dictionary不保留项的顺序,这在某些情况下可能是至关重要的!
不,
实际上你的属性Value
已经有索引器从字符串和返回字符。也许你需要这样的东西:
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];
你不能这样做,(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];