C#静态索引器不应该编译,但是

时间:2011-06-03 18:07:52

标签: c# static indexer

我意识到我们不能在C#中使用静态索引器。但是为什么下面的代码编译正确(在C#4.0下)?

由于Fred是一个静态类,因此甚至无法实例化。声明的静态索引器没有任何意义,但编译器允许它。为什么?我无法想象这是一个编译器错误这种语言的后期。

public static class Fred {
  public static int this[String str] {
    get {
      if (str != null)
        return str.Length;

      return -1;
    }
  }
}

1 个答案:

答案 0 :(得分:1)

这不编译。在编译期间,Visual Studio报告2个错误,CS0106CS0720

  

C:\ Path \ To \ Program.cs(5,23):错误CS0106:修饰符'static'对此项无效   C:\ Path \ To \ Program \ Program.cs(5,23):错误CS0720:'Fred.this [string]':无法在静态类中声明索引器