只是好奇,.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. 阿卡Scala中,感嘆號和問號
- 4. cmd和感嘆號
- 5. facebook中缺少感嘆號API名稱
- 6. 替換字符串末尾的感嘆號
- 7. URL末尾的感嘆號標記它做了什麼?
- 8. 的感嘆號
- 9. 雙感嘆號?
- 10. 感嘆號
- 11. dll感嘆號問題?
- 12. 命名約定:爲什麼Array#delete在末尾沒有感嘆號?
- 13. 用感嘆號代替問號
- 14. 感嘆號錯誤?
- 15. 感嘆號衝突
- 16. 感嘆號在VB.NET
- 17. 批處理 - EnableDelayedExpansion,感嘆號和文件/文件夾名稱
- 18. 鑰匙感嘆號枚舉
- 19. ISO-8859中倒置的感嘆號和問號
- 20. swift中的問號和感嘆號有什麼區別?
- 21. 帶感嘆號的Telerik RadTextBox
- 22. facebook上的感嘆號
- 23. SQL XML中的感嘆號
- 24. 感嘆號的NSString前
- 25. 雙鏈感嘆號所需的括號?
- 26. 在問號和感嘆號之前添加空格
- 27. 擊:單引號和雙引號和感嘆號
- 28. Android eclipse - 項目名稱旁邊的感嘆號
- 29. bash函數名稱中的感嘆號 - 我應該嗎?
- 30. 感嘆號和太多的參數