C#和VB.NET之间的拼写默认值不同。为什么?
C#和VB.NET之间的一个微妙语言差异是,用于调用Win32 API的C#和VB.NET之间的拼写默认值不同。为什么?,c#,vb.net,pinvoke,C#,Vb.net,Pinvoke,C#和VB.NET之间的一个微妙语言差异是,用于调用Win32 API的dlliPortAttribute,是否需要应用于在其标识符中声明尾随“A”或“W”字符的方法(该字符代表ANSI字符集或Unicode字符集)。更确切地说,这两种语言都允许这两种方法中的任何一种,但是DllImportAttribute.ExactSpelling参数的默认值 现在我对此感到惊讶,因为我将C#与更面向机器的、区分大小写的标识符匹配相关联,将VB.NET与更面向人类的、不区分大小写的标识符匹配相关联,而在这种
dlliPortAttribute
,是否需要应用于在其标识符中声明尾随“A”或“W”字符的方法(该字符代表ANSI字符集或Unicode字符集)。更确切地说,这两种语言都允许这两种方法中的任何一种,但是DllImportAttribute.ExactSpelling
参数的默认值
现在我对此感到惊讶,因为我将C#与更面向机器的、区分大小写的标识符匹配相关联,将VB.NET与更面向人类的、不区分大小写的标识符匹配相关联,而在这种情况下,C#默认允许比VB.NET更松散的匹配
这种语言差异背后的逻辑是什么?在我看来,如果你回顾一下: C++的大小写敏感,C语言从这一语言中得到很多,我认为让C++开发者更容易切换到C语言;
VB.NET从Visual Basic和Basic语言中获得更多功能这只是历史,VB版本早在C#出现之前就存在了。并使用
Declare
关键字进行pinvoke。它没有ExactSpelling的等价物,迫使VB程序员显式声明A或W版本。因此,true是一个合理的默认值。我猜这是为了与VB的Declare语句兼容。这并没有提供问题的答案。一旦你有足够的钱,你就可以在任何岗位上工作。也检查一下这个。