索引器在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#中,但没有这个

不允许,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];