回答
看起來像C#相當於將
var MyKeyChr = char.ConvertFromUtf32((int) e.KeyCode)
但是,e.KeyCode
不包含Unicode代碼點,所以此轉換沒有意義。
的ChrW
C#中的快速和骯髒的等效值只是鑄造char
:
char MyKeyChr = (char)e.KeyCode;
的時間更長,更具表現力的版本是使用轉換類之一,而不是像System.Text.ASCIIEncoding
。
或者你甚至可以通過導入Microsoft.VisualBasic
命名空間在C#中使用實際的VB.NET函數。如果你依靠引擎蓋下的ChrW
方法進行的某些特殊檢查,那麼這真的是非常必要的,你可能不應該依賴這些方法。該代碼會是這個樣子:
char MyKeyChr = Microsoft.VisualBasic.Strings.ChrW(e.KeyCode);
然而,這不能保證產生你想要什麼在這種情況下(也不是原碼)。枚舉Keys
中的所有值都不是ASCII值,因此不是所有值都可以直接轉換爲字符。特別是鑄造Keys.NumPad1
等。人。到char
不會產生正確的值。
最文學的方式來翻譯的代碼是使用從C#
MyKeyChr = Microsoft.VisualBasic.Strings.ChrW(e.KeyCode);
的VB.Net運行時函數如果你想避免在VB.Net運行時的依賴性,雖然你可以使用這個下調版本
MyKeyChr = Convert.ToChar((int) (e.KeyCode & 0xffff));
您的短語使其聽起來像VB.NET運行時的方式與C#運行時完全獨立的運行時環境。 'Microsoft.VisualBasic'只是BCL中的一個類。在C#程序中使用它並不會真正添加額外的依賴項;無論如何,編譯器將完全質量所有導入的參考。 – 2011-05-19 15:06:21
@Cody在談論'Microsoft.VisualBasic.dll'時經常會涉及到一些細節。從VB.Net的角度來看,它是一個運行時DLL(在文檔和用戶頭腦中)。該語言對該DLL中的行爲有很大的運行時依賴性。它的部分內容與底層語言語義是分不開的。但是,當考慮諸如 「.Net運行時」之類的術語時,可能會引起混淆。請注意,儘管C#的動態支持4.0程序集在許多文檔中也被稱爲C#運行時DLL。 – JaredPar 2011-05-19 15:40:07
@Cody是的,它只是另一個DLL,但它有一組依賴關係,許多人根本無法從通常所知的語言運行時期望這些依賴關係。例如它取決於'System.Windows.Forms'和'System.Management'。 – JaredPar 2011-05-19 15:41:36
- 1. rlwinm的C++等價物是什麼? (PowerPC)
- 2. 什麼是C++中的instanceof等價物?
- 3. 什麼是EventWaitHandle的Objective C等價物?
- 4. 什麼是UINT32_MAX的C++等價物?
- 5. &H2的C#等價物是什麼?
- 6. 什麼是C#中的vbNullChar等價物?
- 7. 什麼是C?:operator的Ruby等價物?
- 8. 什麼是C++ typeid的Scala等價物?
- 9. C#中bigint的等價物是什麼?
- 10. C#中TreeBidiMap的等價物是什麼?
- 11. 什麼是Java DecimalFormat的c#等價物?
- 12. 什麼是CRT的C++等價物?
- 13. C#中memset的等價物是什麼?
- 14. 什麼是C++ deque的Java等價物?
- 15. 什麼是MsgWaitForMultipleObjects的C#等價物?
- 16. 什麼是Java Socket.getInetAddress()的C#等價物?
- 17. 什麼是Python的os.walk的等價物?
- 18. 什麼是PHP的preg_quote的等價物?
- 19. 什麼是Hub的HttpContext.GetOwinContext()的等價物?
- 20. MessageFormat的Pattern.quote()的等價物是什麼?
- 21. 什麼是Process.Start的VB 6等價物?
- 22. 什麼是android中的dataWithContentsOfURL等價物?
- 23. 什麼是HttpContext.Current.Request.RawUrl的WCF等價物?
- 24. RDFlib中rdf:ID的等價物是什麼?
- 25. Monotouch中的CGPDFDocumentGetCatalog等價物是什麼?
- 26. 什麼是'document.getElementsByClassName'的Prototype 1.6.0+等價物?
- 27. 什麼是OS X的UIGraphicsGetCurrentContext()等價物?
- 28. 什麼是DB2的Varchar(Max)等價物?
- 29. 什麼是VC7中的strtok_s等價物?
- 30. Unity 5.3:什麼是UnitEngine.Application.loadedLevel的等價物?
這不是直接的等價物。 VB.Net版本處理某些直接轉換不會的邊界情況(例如,'char'範圍之外)。邊界情況是肯定的,但演員陣容不是直接相當的 – JaredPar 2011-05-19 14:59:39
@Jared:一個公平點,我總是忘記一些額外的行爲。答案固定。 – 2011-05-19 15:02:57