enum SameName { Value }
class Tester
{
void Method1() {
SameName SameName;
SameName test = SameName.Value;
}
void Method2() {
string SameName;
SameName test = SameName.Value;
}
}
最初の方法では、コンパイラは、SameName.Value が列挙型を参照していることを正しく判断します。
2 番目の方法では、コンパイラが混乱し、SameName.Value が文字列クラスの Value メンバーを参照していると見なします。そのようなメンバーは存在しないため、エラーになります。
このコンテキストで、コンパイラが SameName 列挙型をより認識できるようにするにはどうすればよいですか? ステートメントを使用してこれを行う方法はありますか?
- 実際のコードで変数または列挙型の名前を変更できません。
- 多くの列挙値を持つ大きな辞書を作成していますが、列挙型の各インスタンスの前に名前空間プレフィックスを追加したくありません。
更新:はい、大文字のローカル変数を使用すべきではないことはわかっています。はい、これらはフィールドではなくローカル変数であることを認識しています。はい、実際のコードがこのように見える場合、これをデバッグするのはひどいことだと思います。上記は、私が実際のコードで抱えている問題を示す短い不自然な例として書きました。意図を明確に伝えていなかったことをお詫び申し上げます。実際のコードでは、クラスは列挙型の名前空間に含まれる名前空間にあり、ローカル変数は基本クラスのプロパティです。問題を見つけやすくするために無関係なコードをすべて削除しようとし、問題の範囲を少し広げるために要件をリストしました。