【问题标题】:“Strange” C# property syntax“奇怪”的 C# 属性语法
【发布时间】:2012-12-17 18:38:44
【问题描述】:

我刚刚在一个 c# 项目中看到了这个:

public char this[int index]

我认为自己是 C# 新手;任何人都可以帮助它是什么意思?

【问题讨论】:

  • “我认为自己是 C# 新手,任何人都可以帮助了解 C++ 中的含义”等等,什么?
  • @BoltClock 一个 C++ 人在 C# 中看到了这个?
  • @Shark:我也是这么想的——但只是在反复考虑之后。

标签: c# properties indexer


【解决方案1】:

它是一个索引器。

索引器允许类或结构的实例被索引,就像 数组。索引器类似于属性,只是它们的访问器采用 参数。 索引器提供类似数组的语法。它允许访问类型 与数组相同的方式。诸如索引器之类的属性经常访问一个 后备商店。我们经常接受一个 int 类型的参数并访问一个 数组类型的后备存储。

http://www.dotnetperls.com/indexer阅读它

string s = "hello";
Console.WriteLine (s[0]); // 'h'
Console.WriteLine (s[3]); // 'l'

实现索引器

要编写索引器,请定义一个名为 this 的属性,以正方形指定参数 括号。例如:

class Sentence
{
   string[] words = "The quick brown fox".Split();
   public string this [int wordNum] // indexer
   {
      get { return words [wordNum]; }
      set { words [wordNum] = value; }
   }
}

下面是我们如何使用这个索引器:

Sentence s = new Sentence();
Console.WriteLine (s[3]); // fox
s[3] = "kangaroo";
Console.WriteLine (s[3]); // kangaroo

一个类型可以声明多个索引器,每个索引器都有不同类型的参数。一个 indexer 也可以带多个参数:

public string this [int arg1, string arg2]
{
  get  { ... } set { ... }
}

索引器在内部编译为名为 get_Itemset_Item 的方法,如下所示:

public string get_Item (int wordNum) {...}
public void set_Item (int wordNum, string value) {...}

编译器默认选择名称Item——你实际上可以通过 使用以下属性装饰您的索引器:

[System.Runtime.CompilerServices.IndexerName ("Blah")]

【讨论】:

    【解决方案2】:
    【解决方案3】:

    这称为索引器。阅读更多关于他们的信息at MSDN

    【讨论】:

      猜你喜欢
      • 2017-12-06
      • 1970-01-01
      • 1970-01-01
      • 2016-08-26
      • 1970-01-01
      • 2012-03-14
      • 2012-10-12
      • 2010-11-24
      • 1970-01-01
      相关资源
      最近更新 更多