我已经看到了很多C#索引器的例子,但是它在现实生活中有什么用途呢?
我知道如果这不是一个重要的特性,C#大师就不会添加它,但是我想不出一个实际应用场景(不是那些虚构的东西)来使用索引器。
注意:我意识到相关问题存在,但它并没有对我有太大的帮助。
我已经看到了很多C#索引器的例子,但是它在现实生活中有什么用途呢?
我知道如果这不是一个重要的特性,C#大师就不会添加它,但是我想不出一个实际应用场景(不是那些虚构的东西)来使用索引器。
注意:我意识到相关问题存在,但它并没有对我有太大的帮助。
Customer Customers = new Customer();
Customers.getAddress(1001);
Customers.getAddress("9090");
Customer Customers = new Customer();
Address o = Customers[10001];
o = Customers["4320948"];
干杯。
http://code-kings.blogspot.in/2012/09/indexers-in-c-5.html
使用 System;
命名空间 Indexers_Example
{
class Indexers
{
private Int16[] RollNumberVariable;
public Indexers(Int16 size)
{
RollNumberVariable = new Int16[size];
for (int i = 0; i < size; i++)
{
RollNumberVariable[i] = 0;
}
}
public Int16 this[int pos]
{
get
{
return RollNumberVariable[pos];
}
set
{
RollNumberVariable[pos] = value;
}
}
}
}
我正在尝试从一个序列文件中获取图像。我需要一种二维数组或锯齿数组来保存像素值。我使用索引器而不是数组,因为循环索引器比循环二维或锯齿数组更快。
针对 @code-kings 的帖子的补充。
此外,调用 RollNumberVariable[0]
将触发默认集合索引器的行为。尽管索引器实际上是属性,但在提取数据时编写自己的逻辑是你的职责。您可以轻松地将大多数索引参数值委托给内部集合,但也可以为某些索引值返回任意值。
举个例子 - 您可以拥有两个不同格式的内部集合,但外部用户将通过单个索引器与它们交互(这将类似于分配器),而这些集合将被隐藏。这基本上鼓励了封装原则。