2

アプリに Utils ユニットがあり、現時点では、次のようないくつかの列挙型しか定義されていません。

public enum MostFavoredStates
{
    California,
    NorthCarolina,
    Vermont,
    NewMexico
}

public enum LeastFavoredStates
{
    NorthDakota,
    Illinois,
    Nebraska
}

public enum StatesInWhichIHaveResided
{
        California,
        NewYork,
        Montana,
    Alaska,
        Oklahoma,
        Wisconsin,
        Idaho,
        Missouri
}

プロジェクトで ReSharper を実行すると、このクラスには「using」ステートメントはまったく必要ないと表示されます。だから、私はそれらをすべて削除し、ほら!本当に何も必要ありません。

「enum」はどこかで宣言する必要があります-そのアセンブリまたは名前空間への参照なしでどのように生きることができますか? すべてのクラスに「組み込まれている」ものがあるとすれば、それは何ですか?

4

3 に答える 3

12

「enum」はどこかで宣言する必要があります-そのアセンブリまたは名前空間への参照なしでどのように生きることができますか? すべてのクラスに「組み込まれている」ものがあるとすれば、それは何ですか?

「enum」は C# 言語のキーワードです。これは、言語自体の一部であるため、解決する必要があるフレームワーク タイプではありません。

このような言語キーワードは他にもたくさんあることに注意してください。たとえば、のエイリアスとして言語に「組み込まれている」intため、 using 句なしで使用できますが、 は.using System;System.Int32Int32System.Int32

于 2012-06-14T16:38:56.853 に答える
2

usingプログラムの開始時にステートメントは必要ありません。それらの存在全体は便宜のためです。

インラインのすべてのタイプに完全修飾名をいつでも使用でき、解決されます。

System.Console.WriteLine(System.String.Empty);

using上記のスニペットは、ブロックなしで問題なくコンパイルされます。追加する唯一の利点はusing System;、上記のコードを次のように短縮できることです。

Console.WriteLine(String.Empty);

現在、特定の名前空間の型が特定のコード ファイルで一般的に使用される回数を考えると、これは大幅な改善となる傾向があり、完全修飾名はほとんど使用されません。

型エイリアス (int、string、double、datetime など) は、非修飾名だけでなく、それらが表すものの完全修飾名にマップされるため、 への依存はありませんusing System

于 2012-06-14T17:17:26.460 に答える
0

int や string などの C# の "組み込み" 型は、.NET 型 System.Int32 および System.String の単なるエイリアスであることに注意することが重要です。

int または string を使用する場合、システムを使用する必要はありません。

どちら (.NET タイプまたは C# エイリアス) を使用するかを決定しようとしている場合は、次の SO の質問が役立つ場合があります。

C#、int、または Int32? 気にする必要がありますか?

于 2012-06-20T13:06:36.003 に答える