【问题标题】:IronRuby - .NET 4.0 - Question Marks and Exclamations at the End of Method NamesIronRuby - .NET 4.0 - 方法名称末尾的问号和感叹号
【发布时间】:2009-09-11 15:31:25
【问题描述】:

只是好奇.NET 4.0 CLR 世界将如何调用以问号和感叹号结尾的方法?从 C# 或 VB.NET 调用的语法是什么样的?

【问题讨论】:

    标签: .net syntax ironruby dynamic-language-runtime


    【解决方案1】:

    我认为您必须在这里区分一下这些情况。

    在 CLR 级别根本没有问题。 CLR 允许在类型和成员名称中包含比大多数语言(例如 C# 和 VB.Net)通常可用的更大的字符集。例如,在 CLR 级别包含撇号是合法的。

    事实上,如果您查看 ECMA CLI 规范的第 8.5.1 节,它并没有明确限制字符集。它仅表示应如何比较它们。

    要考虑的另一个问题是名称实际上是如何写入 IL 的。没有什么可以阻止 IronRuby 在写出程序集时简单地排除感叹号,并在从磁盘读取程序集时将它们添加回来。这种类型的映射由其他语言完成,以将丑陋的名称转换为有效的名称。例如,如果您在 IL 级别查看 List<T>,它实际上被写为 List`1。

    我并不是说 IronRuby 做这些映射,只是说他们有可能做。我实际上对 Ruby 作为一门语言非常陌生。

    关于它们是如何从 VB.Net 和 C# 中使用的。幸运的是,这两种语言都可以选择遵循 DLR 来与原始 IronPython 和 IronRuby 交互。这允许语言编写者灵活地将其成员暴露给其他语言,并允许他们可以将成员名称映射到其内部表示的另一个层。

    【讨论】:

      【解决方案2】:

      在 C# 或 VB.NET 中,您必须使用 DLR 托管接口来访问这些方法,使用方法名称作为字符串。这些语言中新的“动态”语法不会覆盖它们对有效方法标识符的正常词法规则。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-12-11
        • 1970-01-01
        • 2012-03-18
        • 2017-02-08
        • 2013-07-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多