VB.NET不区分大小写; 那种区分大小写?

why*_*heq 0 c# vb.net visual-studio-2010

这是好的C#:

private int total;
public int Total {
    get {
        return total;
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,支持字段total拼写相同,Property Total唯一的事情就是告诉他们不同的情况T.

随着VB.NETVS如果我尝试做以下抱怨.事实上,它甚至不会让我Return total用小写字母写t并自动更正大写T

在此输入图像描述

但如果我以不同方式拼写支持字段,那么它似乎没问题:

Private fTotal As Integer
Public ReadOnly Property Total() As Integer
    Get
        Return fTotal
    End Get
End Property
Run Code Online (Sandbox Code Playgroud)

我意识到它们是不同的语言,但这种差异背后有合理的原因吗?(编辑最初说"明显不一致"而不是"差异")

另外 - 我假设即使Visual Studio自动更正我的VB.NET的情况,但实际上这种语言不区分大小写?

Kon*_*lph 5

我意识到它们是不同的语言,但这种明显的不一致背后是否存在逻辑上的原因?

最初的原因只是历史:VB基于BASIC,它与当时的其他语言(FORTRAN)一样不区分大小写(但通常以全大写形式编写).

此外,我没有看到任何不一致:在VB内部,外壳完全一致.特别是,正如你的标题所要求的那样,它不是"区分大小写".

这里一个合乎逻辑的理由是即使在今天,不区分大小写,:它使我们更难介绍,由于名称冲突的bug; 考虑以下C#代码:

private int total;

public int Total {
    get { return total; }
    set { Total = value; }
}
Run Code Online (Sandbox Code Playgroud)

你有没有立即发现错误?如果是这样,那就不错了(这里的语法高亮有帮助).在VB中,这类错误不可能发生.但实际上我认为这类错误并不是那么有问题,因为一旦发现它们很容易被淘汰.因此,尽管这是不区分大小写的原因,但它并不是一个非常强大的原因.

最后,请注意Windows和OS X文件系统在这里使用与VB相同的约定:文件系统不区分大小写(文件名大小写无关紧要)但是区分大小写 - 意味着文件系统保留文件名的原始大小并显示它正确但比较时,它不考虑案例.