回答
看起来像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. C#中TreeBidiMap的等价物是什么?
- 2. 什么是C#中的vbNullChar等价物?
- 3. C#中memset的等价物是什么?
- 4. 什么是C?:operator的Ruby等价物?
- 5. C#中bigint的等价物是什么?
- 6. 什么是CRT的C++等价物?
- 7. 什么是Java Socket.getInetAddress()的C#等价物?
- 8. 什么是Java DecimalFormat的c#等价物?
- 9. 什么是UINT32_MAX的C++等价物?
- 10. 什么是MsgWaitForMultipleObjects的C#等价物?
- 11. 什么是EventWaitHandle的Objective C等价物?
- 12. 什么是C++ typeid的Scala等价物?
- 13. 什么是Python的os.walk的等价物?
- 14. 什么是PHP的preg_quote的等价物?
- 15. MessageFormat的Pattern.quote()的等价物是什么?
- 16. 什么是Win32_OperatingSystem的64位等价物?
- 17. 什么是VC7中的strtok_s等价物?
- 18. java.time.Duration的Android等价物是什么?
- 19. 什么是“hasOwnProperty()”接口的等价物?
- 20. 什么是JQuery .load()的YUI等价物?
- 21. InputBindings的WinRT等价物是什么?
- 22. 什么是Silverlight中的OnRender等价物?
- 23. 什么是mac的win32等价物?
- 24. 什么是request.getRemoteUser()的JSP EL等价物?
- 25. 什么是JMX的.NET等价物?
- 26. 什么是Windows CE的kbhit等价物?
- 27. 什么是Python os.pathsep的等价物?
- 28. MySQL中'go'的等价物是什么?
- 29. Bash中%%〜nxD的等价物是什么?
- 30. 什么是HTTP_MOD_REWRITE的IIS等价物?
这不是直接的等价物。 VB.Net版本处理某些直接转换不会的边界情况(例如,'char'范围之外)。边界情况是肯定的,但演员阵容不是直接相当的 – JaredPar 2011-05-19 14:59:39
@Jared:一个公平点,我总是忘记一些额外的行为。答案固定。 – 2011-05-19 15:02:57