Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#和VB.NET之间的拼写默认值不同。为什么?_C#_Vb.net_Pinvoke - Fatal编程技术网

C#和VB.NET之间的拼写默认值不同。为什么?

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与更面向人类的、不区分大小写的标识符匹配相关联,而在这种

C#和VB.NET之间的一个微妙语言差异是,用于调用Win32 API的
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语句兼容。这并没有提供问题的答案。一旦你有足够的钱,你就可以在任何岗位上工作。也检查一下这个。