今天我已经看过索引器了,但我有点困惑。是否真的需要索引器?使用索引器有什么好处.....提前感谢
答案 0 :(得分:6)
我想最简单的答案是看看你如何使用(比方说)List<T>
。你愿意写:
string foo = list[10];
或
string foo = list.Get(10);
同样对于字典,您更愿意使用:
map["foo"] = "bar";
或
map.Put("foo", "bar");
就像属性一样,对于它们来说,没有真正的需要与仅遵循约定的命名方法相比......但是在我看来,它们使代码更容易理解 - 这是最重要的一个功能可以做的事情。
答案 1 :(得分:3)
使用索引器,您可以获得对集合中对象的引用,而无需遍历整个集合。
假设您有数千个对象,并且您需要最后一个对象。您只需使用所需对象的索引,而不是遍历集合中的所有项目。
索引器不必是整数,所以你可以使用一个字符串,例如,(虽然你可以使用任何对象,只要集合支持它)作为索引器 - 这让我们你在集合中“命名”对象以供以后检索,也非常有用。
答案 2 :(得分:2)
我认为zedo最接近恕我直言的真正原因,他们已经添加了这个功能。这是为了方便,就像我们拥有属性一样。
代码更易于输入,更易于阅读,只需简单的抽象即可帮助您理解。
例如:
string[] array;
string value = array[0];
List<string> list;
string value = list[0]; //Abstracts the list lookup to a call similar to array.
Dictionary<string, int> map;
int value = map["KeyName"]; //Overloaded with string lookup.
答案 3 :(得分:1)
索引器允许您以与创建集合类时有用的数组相同的方式引用您的类,但是在类似于类数组的行为中也可以在其他情况下使用,例如在处理大型时提交或抽象一组有限资源。
答案 4 :(得分:0)
答案 5 :(得分:-1)
由于某种原因,使用索引器可以让您创建有意义的索引来存储或映射您的数据。然后你可以通过有意义的索引从另一边获得它。
答案 6 :(得分:-1)
using System;
/ *这是一个简单的程序。我想这会帮助你理解* /
namespace Indexers
{
class Demo
{
int[] a = new int[10];
public int Lengths
{
get
{
return a.Length;
}
}
public int this[int index]
{
get
{
return a[index];
}
set
{
a[index] = value;
}
}
}
class Program
{
static void Main(string[] args)
{
Demo d = new Demo(); // Notice here, this is a simple object
//but you can use this like an array
for (int i = 0; i < d.Lengths; i++)
{
d[i] = i;
}
for (int i = 0; i < d.Lengths; i++)
{
Console.WriteLine(d[i]);
}
Console.ReadKey();
}
}
}
/*Output:
0
1
2
3
4
5
6
7
8
9
*/