1. ホーム
  2. vb.net

[解決済み] VBは本当に大文字小文字を区別しないのですか?

2022-08-06 01:37:18

質問

ここで議論を始めるつもりはありませんが、どういうわけか、一般的に Visual Basic は大文字小文字を区別せず、C 言語は区別しないと言われています (そしてなぜかそれは良いことだとも言われています)。

しかし、ここで私の疑問があります。Visual Basic のどこで大文字と小文字が区別されないのでしょうか。私がタイプするとき...

Dim ss As String
Dim SS As String

...を Visual Studio 2008 または ビジュアルスタジオ 2010 IDE の場合、2 番目のものは " の警告が表示されます。 ローカル変数 SS は現在のブロックで既に宣言されています "と表示されます。VBAのVBEでは、すぐにエラーを蹴るわけではなく、自動修正されるだけです。

Visual Basic は大文字と小文字を区別しないというこの議論について、私は何かを見逃しているでしょうか。(また、ご存知の方、または回答する気になる方は、なぜそれが悪いことなのでしょうか?)

なぜ私はこの質問をするのでしょうか?

私は何年もの間、Visual Basic の多くの方言を使用してきました。 これまで何年も、時には趣味で 趣味で、時には小さな ビジネス関連のプログラムを ワークグループでの小さなビジネス関連のプログラムに使用してきました。この半年の時点では。 大きなプロジェクトに取り組んできました。 予想以上に大きなプロジェクトです。多くの サンプルソースコードの多くは はC#である。私は、C#を学びたいという熱意はないのですが C#を学びたいとは思っていないのですが、もしC#で足りないものがあれば C#が提供するもので、Visual Basicが提供しないもの(その逆)があれば が提供するもので、Visual Basicにはないものがあれば(逆にVB.NETが提供するものであれば はVB.NETが提供する XML リテラル を提供しているようなものです)、それなら、私はその機能について その機能についての詳細を知りたいのです。ですから、この場合 の場合、よく議論されるのは、C の言語は大文字と小文字を区別するので Visual Basicは大文字と小文字を区別しない。 は大文字小文字を区別しないので悪い、という議論があります。私は を知りたいのですが...。

  1. Visual Basic は具体的にどのように はどのように大文字と小文字を区別するのでしょうか? コードエディタ内のすべての例で が大文字小文字を区別するようになります。 大文字と小文字が区別されます。 大文字と小文字が区別されます。
  2. このことは、私が VB.NET の場合、C# に移行することを検討するのに十分な説得力があります。 コードでできることを何らかの形で制限しているのであれば コードでできることを制限しているとしたら、C# に移行することを検討するのに十分な説得力がありますか?

どのように解決するのですか?

VBAとの違い VB.NET は、VB.NETがバックグラウンドで連続的にコンパイルしているからというだけです。VBAをコンパイルするとエラーが出ます。

のように ジョナサンのコメント プログラミングをするとき、VB.NET は文字列比較、XML、および他のいくつかの状況を除いて、大文字と小文字を区別しないと考えることができます...。

フードの下に何があるのかに興味があるのだと思います。.NET 共通言語ランタイムは 大文字小文字を区別する であり、VB.NETコードはランタイムに依存しているので、変数やメソッドを検索するときなど、実行時に大文字と小文字を区別する必要があることはおわかりでしょう。

VB.NET コンパイラとエディタはそれを無視することができます。 大文字と小文字を修正する を修正するからです。

動的機能またはレイトバインディング (Option Strict Off) で遊んでいれば、基礎となるランタイムが大文字小文字を区別していることを証明できます。これを見る別の方法は、C# のような大文字と小文字を区別する言語は同じランタイムを使用するので、ランタイムは明らかに大文字と小文字を区別することをサポートしていることを理解することです。

EDIT IDEを排除したい場合は、いつでも コマンドラインからコンパイルする . でコードを編集します。 メモ帳 にあるように ssSS を追加し、コンパイラがどう動くか見てみましょう。

EDIT 引用元 ジェフリー・リヒター の中で .NET フレームワーク設計ガイドライン の 45 ページを参照してください。

明確にしておくと、CLRは実際には は大文字と小文字を区別します。Visual Basic のように大文字と小文字を区別するプログラミング言語もあります。 Visual Basicのようなプログラミング言語では、大文字と小文字を を区別しません。Visual Basicコンパイラは、大文字と小文字を区別しません。 メソッド呼び出しを解決しようとするとき のような大文字と小文字を区別する言語で定義された型への C#のような大文字小文字を区別する言語で定義された型へのメソッド呼び出しを解決しようとすると、(CLRではなく)コンパイラが CLRではなく)コンパイラがメソッド名の実際の大文字と小文字を判断し メソッド名の実際の大文字と小文字を把握し、それをメタデータに埋め込みます。 メタデータに埋め込みます。CLRはこれについて何も知らない。 CLRはこのことについて何も知らない。さて、もしあなたがリフレクションを使用しているのであれば を使ってメソッドにバインドしている場合、 Reflection APIは大文字小文字を区別しない検索を行う機能を提供します。 大文字小文字を区別しないルックアップを行う機能を提供します。これは これはCLRが提供する範囲である。 は大文字小文字を区別しません。