我意识到我们不能在 C# 中使用静态索引器。但是为什么下面的代码编译正确(在 C# 4.0 下)?
由于 Fred 是一个静态类,它甚至不能被实例化。声明的静态索引器没有意义,但编译器允许它。为什么?我无法想象这是语言中这么晚的编译器错误。
public static class Fred {
public static int this[String str] {
get {
if (str != null)
return str.Length;
return -1;
}
}
}