gpt4 book ai didi

vb.net - VB真的不区分大小写吗?

转载 作者:行者123 更新时间:2023-12-03 04:36:38 24 4
gpt4 key购买 nike

我不想在这里引发争论,但无论出于何种原因,通常都会说 Visual Basic 不区分大小写,而 C 语言则不然(不知何故,这是一件好事)。

但我的问题是:Visual Basic 到底在哪里不区分大小写?当我输入时...

Dim ss As String
Dim SS As String

...进入Visual Studio 2008Visual Studio 2010 IDE,第二个有一个警告“本地变量 SS 已在当前 block 中声明”。在 VBA VBE 中,它不会立即踢出错误,而只是自动更正大小写。

我是否遗漏了 Visual Basic 不区分大小写这一论点? (另外,如果你知道或愿意回答,那为什么会是一件坏事呢?)

我为什么要问这个问题?

我在许多项目中都使用过 Visual Basic方言已经很多年了,有时是业余爱好者,有时是小与商业相关的类(class)工作组。截至过去六个月,我一直在做一个大项目比我预期的要大得多。很多那里的示例源代码是在 C# 中。我没有任何燃烧想要学习C#,但是如果有的话我在 C# 中错过的东西提供 Visual Basic 不提供的功能(相反将是 VB.NET 提供 XML Literals ),那么我想知道有关该功能的更多信息。所以在这个在这种情况下,人们常常认为 C语言区分大小写并且很好,Visual Basic 就是这样不敏感,这是不好的。 ID想知道...

  1. Visual Basic 究竟如何 不区分大小写,因为每个 代码编辑器中的单个示例 变得区分大小写(意味着 案件得到纠正)无论我想要 无论是否。
  2. 这足以让我信服吗如果是 VB.NET,请考虑转向 C#在某种程度上限制了我能做的事情有代码吗?

最佳答案

VBA 和 VB.NET 之间的区别只是因为 VB.NET 在后台持续编译。编译 VBA 时会出现错误。

Jonathan says 一样,在编程时,除了字符串比较、XML 和其他一些情况之外,您可以将 VB.NET 视为不区分大小写...

我认为您对幕后的内容感兴趣。好吧,.NET 公共(public)语言运行时区分大小写,而 VB.NET 代码依赖于运行时,因此您可以看到它在运行时必须区分大小写,例如当它查找变量和方法时。

VB.NET 编译器和编辑器允许您忽略这一点 - 因为它们更正代码中的大小写

如果您尝试使用动态功能或后期绑定(bind)(Option Strict Off),您可以证明底层运行时是区分大小写的。另一种了解这一点的方法是认识到像 C# 这样区分大小写的语言使用相同的运行时,因此运行时显然支持区分大小写。

编辑如果您想将 IDE 排除在外,您可以随时使用 compile from the command-line 。在 Notepad 中编辑代码,使其具有 ssSS 并查看编译器会做什么。

编辑引用Jeffrey Richter第45页中的.NET Framework Design Guidelines

To be clear, the CLR is actually case-sensitive. Some programming languages, like Visual Basic, are case insensitive. When the Visual Basic compiler is trying to resolve a method call to a type defined in a case-sensitive language like C#, the compiler (not the CLR) figures out the actual case of the method's name and embeds it in metadata. The CLR knows nothing about this. Now if you are using reflection to bind to a method, the reflection APIs do offer the ability to do case-insensitive lookups. This is the extent to which the CLR offers case-insensitivity.

关于vb.net - VB真的不区分大小写吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2300983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com