C#静态索引器不应该编译,但应该编译
本文关键字:编译 不应该 静态 索引 | 更新日期: 2023-09-27 17:58:25
我意识到C#中不能有静态索引器。但是为什么下面的代码能正确编译(在C#4.0下)?
由于Fred是一个静态类,它甚至不能被实例化。声明的静态索引器没有意义,但编译器允许它。为什么?我无法想象这是一个编译器错误这么晚才进入语言。
public static class Fred {
public static int this[String str] {
get {
if (str != null)
return str.Length;
return -1;
}
}
}
这不会编译。在编译过程中,Visual Studio报告了2个错误,CS0106和CS0720:
C: ''Path''To''Program.cs(5,23):错误CS0106:修饰符"static"对此项无效C: ''Path''To''Program''Program.cs(5,23):错误CS0720:"Fred.this[string]":无法在静态类中声明索引器