-1

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

由于 Fred 是一个静态类,它甚至不能被实例化。声明的静态索引器没有意义,但编译器允许它。为什么?我无法想象这是语言中这么晚的编译器错误。

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

      return -1;
    }
  }
}
4

1 回答 1

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]':不能在静态类中声明索引器

于 2011-06-03T18:10:36.697 回答