Tod*_*ain 119 vb.net vba case-sensitive case-insensitive
我不是试图在这里开始论证,但无论出于何种原因,它通常表明Visual Basic不区分大小写,C语言不是(并且不知何故这是一件好事).
但这是我的问题:Visual Basic在哪里确实不区分大小写?当我输入...
Dim ss As String
Dim SS As String
Run Code Online (Sandbox Code Playgroud)
...进入Visual Studio 2008或Visual Studio 2010 IDE,第二个警告" 已在当前块中声明了局部变量SS ".在VBA VBE中,它不会立即引发错误,而只是自动更正案例.
我在这里错过了一些关于Visual Basic不区分大小写的论点吗?(另外,如果你知道或想要回答,为什么这会是一件坏事?)
为什么我甚至都会问这个问题?
我已经在很多方言中使用过Visual Basic多年了,有时作为业余爱好者,有时候用于工作组中的小型商业相关程序.截至过去六个月,我一直致力于一个比我预期的大得多的大项目.许多示例源代码都在C#中.我没有任何学习C#的强烈愿望,但如果有些东西我错过了C#提供的Visual Basic没有(相反的是VB.NET提供XML Literals),那么我想了解有关该功能的更多信息.所以在这种情况下,经常认为C语言是区分大小写的,这很好,Visual Basic不区分大小写,这很糟糕.我想知道...
Mar*_*rkJ 106
VBA和VB.NET之间的区别仅仅是因为VB.NET在后台连续编译.编译VBA时会出错.
就像Jonathan所说的那样,在编程时你可以将VB.NET视为不区分大小写,除了字符串比较,XML和其他一些情况......
我觉得你对引擎盖下的内容很感兴趣.嗯,.NET公共语言运行时区分大小写,VB.NET代码依赖于运行时,因此您可以看到它在运行时必须区分大小写,例如,当它查找变量和方法时.
VB.NET编译器和编辑器让你忽略它 - 因为它们纠正了代码中的大小写.
如果您使用动态功能或后期绑定(Option Strict Off),您可以证明基础运行时区分大小写.另一种看待这种情况的方法是认识到像C#这样的区分大小写的语言使用相同的运行时,因此运行时显然支持区分大小写.
编辑如果要使IDE脱离等式,您始终可以从命令行进行编译.编辑代码在记事本,因此具有ss和SS看编译器做什么.
编辑来自Jeffrey Richter的.NET Framework设计指南第45页.
需要说明的是,CLR实际上是区分大小写的.某些编程语言(如Visual Basic)不区分大小写.当Visual Basic编译器尝试解析对像C#这样的区分大小写的语言中定义的类型的方法调用时,编译器(而不是CLR)会计算方法名称的实际情况并将其嵌入元数据中.CLR对此一无所知.现在,如果您使用反射绑定到方法,则反射API确实能够执行不区分大小写的查找.这是CLR提供不区分大小写的程度.
Jar*_*Par 21
这里的部分问题是您需要将语言与IDE体验区分开来.
作为一种语言,VB.NET在标识符方面肯定不区分大小写.调用DateTime.Parse和datetime.parse将结合到完全相同的代码.与C#之类的语言不同,不可能定义仅根据大小写不同的方法或类型.
作为一个IDE,当VB.NET很好地列出一段代码时,它会尝试保留现有标识符的大小写.当你离开当前的逻辑代码行时,会出现漂亮的列表.在这种情况下,你离开第二个声明SS,漂亮的lister注意到有一个具有该名称的现有标识符并将其更正为具有匹配的大小写.
但是,此行为纯粹是作为用户值添加完成的.它不是核心语言的一部分.
Jon*_*len 16
VB 大部分不区分大小写,但也有例外.例如,XML文字和理解区分大小写.字符串比较通常区分大小写,与T-SQL不同,但是有编译器切换使字符串比较不区分大小写.当然,在处理继承,COM和动态语言运行时时也存在边缘情况.
VB是大小写保留(在IDE中)但不区分大小写.它在某种程度上就像Windows文件系统.Hello.txt和hello.txt被认为是相同的文件名.
IDE假定声明变量是该变量的"正确"大小写,并调整该变量的每个实例与声明匹配.它出于眼睛糖果和一致性的原因,但不是功能性.
我已经看到几个实例,其中案例没有自动更改以匹配声明,并且语句的工作原理相同.您还可以使用任何文本编辑器编写在不同情况下编译得很好的代码.
附注:
多数人民认为,在不区分大小写的方式.当我们看到"狗"这个词时,这个词在我们的脑海中被翻译成了意义.这个词的意思不是基于案例(即不管拼写它是"DOG","DoG"还是"dOG"仍然吠叫.) 计算机将单词视为不连续的位.大写和小写是不同的位模式,因此是不同的.
由于大多数程序员都是人,因此案例不敏感似乎更适应人们的思维方式,而案例敏感性更多地是关于人类如何思考机器的约束.
这是您正在使用的编辑器的一部分,它们可能表现不同,但事实是Visual Basic 确实是不区分大小写的语言.所以,ss并且SS是一样的.