-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 はCS0106CS0720の 2 つのエラーを報告します。

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 に答える