Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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
Vb.net VB真的不区分大小写吗?_Vb.net_Vba_Case Sensitive_Case Insensitive - Fatal编程技术网

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

Vb.net VB真的不区分大小写吗?,vb.net,vba,case-sensitive,case-insensitive,Vb.net,Vba,Case Sensitive,Case Insensitive,我不想在这里开始讨论,但不管出于什么原因,通常都会说VisualBasic不区分大小写,而C语言则不区分大小写(不知何故,这是一件好事) 但我的问题是:VisualBasic到底在哪里不区分大小写?当我打字的时候 Dim ss As String Dim SS As String …在or IDE中,第二个IDE有一个警告“局部变量SS已在当前块中声明”。在VBA VBE中,它不会立即触发错误,而只是自动更正错误 VisualBasic不区分大小写这一论点是否遗漏了什么?(另外,如果你知道或愿

我不想在这里开始讨论,但不管出于什么原因,通常都会说VisualBasic不区分大小写,而C语言则不区分大小写(不知何故,这是一件好事)

但我的问题是:VisualBasic到底在哪里不区分大小写?当我打字的时候

Dim ss As String
Dim SS As String
…在or IDE中,第二个IDE有一个警告“局部变量
SS
已在当前块中声明”。在VBA VBE中,它不会立即触发错误,而只是自动更正错误

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

我为什么要问这个问题?

我在很多方面都使用过VisualBasic 方言已经有好几年了,有时 业余爱好者,有时为小朋友 与商业相关的课程 工作组。截至最近六个月,, 我一直在做一个大项目, 比我预想的要大得多。很 示例源代码的一部分 是C#。我没有发烧 渴望学习C#,但如果有 我在C上错过的东西# 提供了VisualBasic没有的功能(相反 是VB.NET提供的),那么我想知道 更多关于该功能的信息。所以在这个 在这种情况下,人们经常认为C 语言区分大小写,并且 这很好,VisualBasic就是这样 麻木不仁,这很糟糕。我想要 我想知道

  • VisualBasic到底有多精确 不区分大小写,因为每个 代码编辑器中的单个示例 变得区分大小写(意思是 案件得到纠正)我是否想要 不管是不是
  • 这对我来说足够令人信服吗 如果VB.NET案例,考虑迁移到C。 不知怎的限制了我的能力 用密码

  • 这是您正在使用的编辑器的一部分,它们的行为可能有所不同,但事实上,Visual Basic确实是一种不区分大小写的语言。因此,
    ss
    ss
    是相同的


    我不确定我是否理解你的意思?VB不区分大小写,因此ss和ss是同一个变量,因此编译器正确地抱怨您重新声明了该变量


    我认为变量不区分大小写,但函数名区分大小写。

    是的,VB不区分大小写。它有时会抛出一些不习惯的循环。

    VB基本上不区分大小写,但也有例外。例如,XML文本和理解是区分大小写的。与T-SQL不同,字符串比较通常区分大小写,但有编译器开关使字符串比较不区分大小写。当然,在处理继承、COM和动态语言运行时时也存在一些边缘情况。

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

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

    我想你对引擎盖下的东西感兴趣。嗯,.NET公共语言运行时区分大小写,VB.NET代码依赖于运行时,因此您可以看到它在运行时必须区分大小写,例如,在查找变量和方法时

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

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

    编辑如果您想将IDE从公式中删除,您可以随时进行编辑。在中编辑代码,使其具有
    ss
    ss
    并查看编译器的功能

    编辑第45页中的引文

    清楚地说,CLR实际上是 区分大小写。一些编程 语言,如VisualBasic,都是如此 不敏感的当Visual Basic编译器 正在尝试解析对的方法调用 在区分大小写的 像C#这样的语言,编译器(不是 CLR)计算出实际情况 方法的名称,并将其嵌入 元数据。CLR对此一无所知 这现在,如果您使用的是反射 要绑定到一个方法,反射 API确实提供了这样做的能力 不区分大小写的查找。这是 CLR提供的范围 不区分大小写


    是的,VB.NET编译器以不区分大小写的方式处理标识符。是的,当它使用用另一种语言编写的程序集或使用COM组件时,可能会导致问题。前一种情况由本报告涵盖。有关规则如下:

    对于要考虑的两个标识符 不同的是,它们必须有更多的不同 不仅仅是他们的情况


    COM案例由类型库生成器处理得相当粗糙,它强制具有相同名称的标识符的大小写相同。即使这些标识符具有不同的角色。换句话说,名为“index”的方法参数将强制将方法名“index”重新转换为“index”。正如您可能想象的那样,这造成了相当多的麻烦:)

    这里的部分问题是您需要将语言与IDE体验分开

    作为一种语言,它对标识符当然是不区分大小写的。调用
    DateTime.Parse
    DateTime.Parse
    将绑定到完全相同的代码。与C#等语言不同的是,不可能定义只因大小写不同的方法或类型

    作为一个IDE,VB.NET试图在列出一段代码时保留现有标识符的大小写。每当您离开当前逻辑代码行时,就会出现漂亮的列表。在本例中,当您离开
    SS
    的第二个声明时,漂亮的列表器注意到
    Dim a As Integer
    Dim A as Integer
    
    Sub b()
        'Some statement(s) here
    End Sub
    Sub B()
        'Some statement(s) here
    End Sub
    
    Function c() As Integer
        'Some statement(s) here
    End Function
    Function C() As Integer
        'Some statement(s) here
    End Function
    
    // C#:
    while (txt.Length > x)
    {
        thisChar = txt[x];
        if (charsAllowedWithoutLimit.Contains(thisChar)) { ++x; }
        else if (allowLettersWithoutLimit && char.IsLetter(thisChar)) { ++x; }
        else if ((x2 = charsAllowedWithLimit.IndexOf(thisChar)) >= 0)
        {
            ++x; if (++usedCountA[x2] > charAllowedLimit[x2]) { break; }
        }
        else { break; }
    }
    
    ' VB.NET:
    While (txt.Length > x)
        thisChar = txt(x)
        If (charsAllowedWithoutLimit.Contains(thisChar)) Then
            x += 1
        ElseIf (allowLettersWithoutLimit AndAlso Char.IsLetter(thisChar)) Then
            x += 1
        Else
            x2 = charsAllowedWithLimit.IndexOf(thisChar)
            If (x2 >= 0) Then
                x += 1
                usedCountA(x2) += 1S
                If usedCountA(x2) > charAllowedLimit(x2) Then Exit While
            Else
                Exit While
            End If
        End If
    End While
    
    // C#
    public static bool IsNotWithin(this Byte   v, Byte   v1, Byte   v2) { return (v1 > v && v < v2) || (v2 < v && v > v1); }
    public static bool IsNotWithin(this SByte  v, SByte  v1, SByte  v2) { return (v1 > v && v < v2) || (v2 < v && v > v1); }
    public static bool IsNotWithin(this Int16  v, Int16  v1, Int16  v2) { return (v1 > v && v < v2) || (v2 < v && v > v1); }
    public static bool IsNotWithin(this Int32  v, Int32  v1, Int32  v2) { return (v1 > v && v < v2) || (v2 < v && v > v1); }
    public static bool IsNotWithin(this Int64  v, Int64  v1, Int64  v2) { return (v1 > v && v < v2) || (v2 < v && v > v1); }
    public static bool IsNotWithin(this UInt16 v, UInt16 v1, UInt16 v2) { return (v1 > v && v < v2) || (v2 < v && v > v1); }
    public static bool IsNotWithin(this UInt32 v, UInt32 v1, UInt32 v2) { return (v1 > v && v < v2) || (v2 < v && v > v1); }
    public static bool IsNotWithin(this UInt64 v, UInt64 v1, UInt64 v2) { return (v1 > v && v < v2) || (v2 < v && v > v1); }
    public static bool IsNotWithin(this Decimal v, Decimal v1, Decimal v2) { return (v1 > v && v < v2) || (v2 < v && v > v1); }
    
    public static bool IsWithin(this Byte   v, Byte   v1, Byte   v2) { return (v1 <= v && v <= v2) || (v2 <= v && v <= v1); }
    public static bool IsWithin(this SByte  v, SByte  v1, SByte  v2) { return (v1 <= v && v <= v2) || (v2 <= v && v <= v1); }
    public static bool IsWithin(this Int16  v, Int16  v1, Int16  v2) { return (v1 <= v && v <= v2) || (v2 <= v && v <= v1); }
    public static bool IsWithin(this Int32  v, Int32  v1, Int32  v2) { return (v1 <= v && v <= v2) || (v2 <= v && v <= v1); }
    public static bool IsWithin(this Int64  v, Int64  v1, Int64  v2) { return (v1 <= v && v <= v2) || (v2 <= v && v <= v1); }
    public static bool IsWithin(this UInt16 v, UInt16 v1, UInt16 v2) { return (v1 <= v && v <= v2) || (v2 <= v && v <= v1); }
    public static bool IsWithin(this UInt32 v, UInt32 v1, UInt32 v2) { return (v1 <= v && v <= v2) || (v2 <= v && v <= v1); }
    public static bool IsWithin(this UInt64 v, UInt64 v1, UInt64 v2) { return (v1 <= v && v <= v2) || (v2 <= v && v <= v1); }
    public static bool IsWithin(this Decimal v, Decimal v1, Decimal v2) { return (v1 <= v && v <= v2) || (v2 <= v && v <= v1); }
    
    ' And the VB equivalent is a mess! Here goes:
    <Extension()>
    Public Function IsNotWithin(v As Byte, value1 As Byte, value2 As Byte) As Boolean
        Return (value1 > v AndAlso v < value2) OrElse (value2 < v AndAlso v > value1)
    End Function
    
    <Extension()>
    Public Function IsNotWithin(v As SByte, value1 As SByte, value2 As SByte) As Boolean
        Return (value1 > v AndAlso v < value2) OrElse (value2 < v AndAlso v > value1)
    End Function
    
    <Extension()>
    Public Function IsNotWithin(v As Int16, value1 As Int16, value2 As Int16) As Boolean
        Return (value1 > v AndAlso v < value2) OrElse (value2 < v AndAlso v > value1)
    End Function
    
    ' the % suffix means 'As Integer' in VB.
    <Extension()>
    Public Function IsNotWithin(v%, value1%, value2%) As Boolean
        Return (value1 > v AndAlso v < value2) OrElse (value2 < v AndAlso v > value1)
    End Function
    
    ' the & suffix means 'As Long' in VB.
    <Extension()>
    Public Function IsNotWithin(v&, value1&, value2&) As Boolean
        Return (value1 > v AndAlso v < value2) OrElse (value2 < v AndAlso v > value1)
    End Function
    
    <Extension()>
    Public Function IsNotWithin(v As UInt16, value1 As UInt16, value2 As UInt16) As Boolean
        Return (value1 > v AndAlso v < value2) OrElse (value2 < v AndAlso v > value1)
    End Function
    
    <Extension()>
    Public Function IsNotWithin(v As UInt32, value1 As UInt32, value2 As UInt32) As Boolean
        Return (value1 > v AndAlso v < value2) OrElse (value2 < v AndAlso v > value1)
    End Function
    
    <Extension()>
    Public Function IsNotWithin(v As UInt64, value1 As UInt64, value2 As UInt64) As Boolean
        Return (value1 > v AndAlso v < value2) OrElse (value2 < v AndAlso v > value1)
    End Function
    
    ' the @ suffix means 'As Decimal' in VB.
    <Extension()>
    Public Function IsNotWithin(v@, value1@, value2@) As Boolean
        Return (value1 > v AndAlso v < value2) OrElse (value2 < v AndAlso v > value1)
    End Function
    
    <Extension()>
    Public Function IsWithin(v As Byte, value1 As Byte, value2 As Byte) As Boolean
        Return (value1 <= v AndAlso v <= value2) OrElse (value2 <= v AndAlso v <= value1)
    End Function
    
    <Extension()>
    Public Function IsWithin(v As SByte, value1 As SByte, value2 As SByte) As Boolean
        Return (value1 <= v AndAlso v <= value2) OrElse (value2 <= v AndAlso v <= value1)
    End Function
    
    <Extension()>
    Public Function IsWithin(v As Int16, value1 As Int16, value2 As Int16) As Boolean
        Return (value1 <= v AndAlso v <= value2) OrElse (value2 <= v AndAlso v <= value1)
    End Function
    
    ' the % suffix means 'As Integer' in VB.
    <Extension()>
    Public Function IsWithin(v%, value1%, value2%) As Boolean
        Return (value1 <= v AndAlso v <= value2) OrElse (value2 <= v AndAlso v <= value1)
    End Function
    
    ' the & suffix means 'As Long' in VB.
    <Extension()>
    Public Function IsWithin(v&, value1&, value2&) As Boolean
        Return (value1 <= v AndAlso v <= value2) OrElse (value2 <= v AndAlso v <= value1)
    End Function
    
    <Extension()>
    Public Function IsWithin(v As UInt16, value1 As UInt16, value2 As UInt16) As Boolean
        Return (value1 <= v AndAlso v <= value2) OrElse (value2 <= v AndAlso v <= value1)
    End Function
    
    <Extension()>
    Public Function IsWithin(v As UInt32, value1 As UInt32, value2 As UInt32) As Boolean
        Return (value1 <= v AndAlso v <= value2) OrElse (value2 <= v AndAlso v <= value1)
    End Function
    
    <Extension()>
    Public Function IsWithin(v As UInt64, value1 As UInt64, value2 As UInt64) As Boolean
        Return (value1 <= v AndAlso v <= value2) OrElse (value2 <= v AndAlso v <= value1)
    End Function
    
    ' the @ suffix means 'As Decimal' in VB.
    <Extension()>
    Public Function IsWithin(v@, value1@, value2@) As Boolean
        Return (value1 <= v AndAlso v <= value2) OrElse (value2 <= v AndAlso v <= value1)
    End Function