C# 静态索引器不应编译,但可以编译

发布于 2024-11-13 10:30:17 字数 320 浏览 4 评论 0原文

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

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

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

      return -1;
    }
  }
}

I realize we cannot have static indexers in C#. But the why does the code below compile correctly (under C# 4.0)?

Since Fred is a static class, it cannot even be instantiated. The declared static indexer makes no sense yet the compiler allows it. Why? I can't imagine it's a compiler bug this late into the language.

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

      return -1;
    }
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

听闻余生 2024-11-20 10:30:17

这不能编译。编译期间,Visual Studio 报告 2 个错误,CS0106< /a> 和 CS0720

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

This does not compile. During compilation, Visual Studio reports 2 errors, CS0106 and CS0720:

C:\Path\To\Program.cs(5,23): error CS0106: The modifier 'static' is not valid for this item
C:\Path\To\Program\Program.cs(5,23): error CS0720: 'Fred.this[string]': cannot declare indexers in a static class

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文