.net - IronRuby - .NET 4.0 - 方法名称末尾的问号和感叹号

标签 .net syntax ironruby dynamic-language-runtime

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

最佳答案

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

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

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

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

我并不是说 IronRuby 执行这些映射,只是说它们有可能执行这些映射。实际上我对 Ruby 这门语言很陌生。

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

关于.net - IronRuby - .NET 4.0 - 方法名称末尾的问号和感叹号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1411638/

相关文章:

.net - 请求的表单例份验证失败。原因 : The ticket supplied has expired

c++ - 在ubuntu中使用Opencv编译警告

php 语法带有 ":",使用还是不使用?

c# - 从 IronRuby 调用 C#

c# - IronRuby,如何将参数变量从 C# 传递到 Ruby?

silverlight - 在 C# 上的 silverlight 功能中的 ruby

c# - 在调用方法之前处理信息的自定义属性

c# - Visual Studio 2010 程序集引用

c# - XmlWriter 在 xml :space=preserve 时插入空格

javascript - 这个 JavaScript 语法/模式是什么意思?