【问题标题】:Different ExactSpelling default between C# and VB.NET. Why?C# 和 VB.NET 之间的 ExactSpelling 默认值不同。为什么?
【发布时间】:2017-08-14 16:04:52
【问题描述】:

C# 和 VB.NET 之间细微的语言差异之一是用于调用 Win32 API 的 DllImportAttribute 是否需要应用于在其标识符中使用尾随“A”或“W”字符声明的方法(该字符代表 ANSI 字符集或 Unicode 字符集。)更准确地说,任何一种语言都允许任何一种做法,但 DllImportAttribute.ExactSpelling 参数的默认值 differs by language

现在我对此感到惊讶,因为我将 C# 与更面向机器、区分大小写的标识符匹配相关联,而 VB.NET 与更面向人、不区分大小写的标识符匹配相关联,现在这是一个案例默认情况下,C# 允许我进行比 VB.NET 更宽松的匹配。

这种语言差异背后的逻辑是什么?

【问题讨论】:

  • 这只是历史,VB 版本早在 C# 出现之前就已经存在。并使用Declare 关键字进行pinvoke。它没有与 ExactSpelling 等效的功能,迫使 VB 程序员显式声明 A 或 W 版本。所以 true 是一个合理的默认值。
  • 我猜是为了兼容 VB 的 Declare 语句。

标签: c# vb.net pinvoke


【解决方案1】:

在我看来,如果你回头看: C++ 区分大小写和 C# 从这种语言中得到了很多,我认为让 C++ 开发人员更容易切换到 C# ;) VB.NET 从 Visual Basic 和 Basic 语言中获得更多优势

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-07
  • 1970-01-01
  • 2010-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-28
相关资源
最近更新 更多