只是好奇,.NET 4.0 CLR世界將如何調用以問號和驚歎號結尾的方法?語法看起來像從C#或VB.NET調用什麼?IronRuby - .NET 4.0 - 方法名稱末尾的問號和感嘆號
3
A
回答
3
我想你必須在這裏區分一些情況。
在CLR級別,根本沒有問題。 CLR允許在類型和成員名稱中包含比通常可用於大多數語言(如C#和VB.Net)更大的一組字符。例如,在CLR級別包含撇號是合法的。
實際上,如果您查看ECMA CLI規範的第8.5.1節,它並未明確限制字符集。它只是表示應該如何比較。
要考慮的另一個問題是名稱是如何寫入IL的。在寫出程序集並從磁盤讀取程序集時將IronRuby添加回來時,IronRuby並沒有阻止簡單排除感嘆號。這種類型的映射是由其他語言完成的,將醜陋的名字變成有效的名字。例如,如果您在IL級別查看List<T>
,那麼它實際上被寫爲List`1。
我並不是說IronRuby會做這些映射,只是說它可能會這樣做。我實際上並不熟悉Ruby作爲一種語言。
至於它們是如何從VB.Net和C#中消耗的。幸運的是,兩種語言都可以選擇DLR與原始IronPython和IronRuby交互。這使得語言編寫者可以靈活地將他們的成員展示給其他語言,並允許另一個可以將成員名稱映射到其內部表示的層。
1
從C#或VB.NET,您必須使用DLR託管接口來訪問這些方法,使用方法名稱作爲字符串。來自這些語言的新「動態」語法不會覆蓋其有效方法標識符的正常詞法規則。
相關問題
- 1. BASIC:函數名稱末尾的感嘆號是什麼意思?
- 2. 項目名稱上的感嘆號
- 3. cmd和感嘆號
- 4. facebook中缺少感嘆號API名稱
- 5. 的感嘆號
- 6. 雙感嘆號?
- 7. 命名約定:爲什麼Array#delete在末尾沒有感嘆號?
- 8. 用感嘆號代替問號
- 9. 感嘆號在VB.NET
- 10. 批處理 - EnableDelayedExpansion,感嘆號和文件/文件夾名稱
- 11. 鑰匙感嘆號枚舉
- 12. swift中的問號和感嘆號有什麼區別?
- 13. facebook上的感嘆號
- 14. 感嘆號的NSString前
- 15. 帶感嘆號的Telerik RadTextBox
- 16. SQL XML中的感嘆號
- 17. 雙鏈感嘆號所需的括號?
- 18. 在問號和感嘆號之前添加空格
- 19. 擊:單引號和雙引號和感嘆號
- 20. Android eclipse - 項目名稱旁邊的感嘆號
- 21. bash函數名稱中的感嘆號 - 我應該嗎?
- 22. 只包含括號,加號和感嘆號的語言
- 23. 無法解析的外部符號:符號名稱末尾的@ 12 vs @ 8
- 24. Java基礎感嘆號
- 25. 使感嘆號更可見
- 26. pynput合併感嘆號
- 27. 感嘆號在網址中
- 28. 感嘆號操作符?
- 29. 瞭解雙重感嘆號
- 30. Shell感嘆號命令