私は多くのプロジェクトでそれを見てきました。開発者はなぜ内部クラスを使用して定数変数をC#に格納しますか?例えばなぜC#で定数の内部クラスを使用するのですか?
:
internal static class Constants
{
public const double Pi = 3.14159;
public const int SpeedOfLight = 300000; // km per sec.
}
私は多くのプロジェクトでそれを見てきました。開発者はなぜ内部クラスを使用して定数変数をC#に格納しますか?例えばなぜC#で定数の内部クラスを使用するのですか?
:
internal static class Constants
{
public const double Pi = 3.14159;
public const int SpeedOfLight = 300000; // km per sec.
}
単純に、設計者は、このクラスが同じアセンブリ内で使用する必要があることを決めました。また、アセンブリを参照するプロジェクトに公開されたりアクセスされたりすることはありません。
Nugetパッケージをダウンロードすると、内部のクラスにアクセスすることはできません。開発者は、これらにアクセスする必要はないと判断しました。したがって、これらの値はこのパッケージの "プライベート"です。アクセス修飾子の
より:
公共:アクセスが制限されていません。
protected:アクセスは、含まれるクラスから派生した1つ以上の型に限定されます。
内部:アクセスは現在のアセンブリに限定されています。
protected internal:アクセスは、現在のアセンブリまたは包含クラスから派生した型に限定されます。
プライベート:アクセスは含むタイプに制限されています。
これは、クラスが存在する現在のアセンブリーによってのみアクセスできるようになっています。これは、あなたのソリューションに含まれているかもしれない他のプロジェクトの使用から保護するためです。下記のアクセス修飾子について
読む:
https://msdn.microsoft.com/en-us/library/ba0a1yw2.aspx?f=255&MSPPError=-2147217396
ほとんどの答えが、彼らは私が考える質問の一部が欠落しているinternal
の意味を説明しながら:なぜ内部クラスの定数を置きますか?
それは彼らが名前空間のようなものを感じて定数を識別することを望むことができますので、これは主に次のとおりです。
double myValue = Constants.Pi * 10;
それとも
double myValue = OtherClass.Constants.Pi * 10;
内部クラスがなければ、彼らはより多くのメンバー/プロパティのようになります。 。少なくとも彼らは命名のためにUPPER_CASINGを使用しません。
答えを完成させるには:internal
は、定数をアセンブリ外で使用するのを防ぐために使用されます。
内部クラスは定数とは関係ありません。両者には関係がありません。また、C#のクラスはデフォルトで内部的(名前空間内で宣言されたクラス)です。 – Nasreddine
'internal'キーワードは何で、なぜ使われているのか知っていますか? 'internal'クラスを強制することは強制されず、個人的には' constants'クラスがconst値で満たされていることは良い設計選択ではないと言います。 – Jite
[C#の "internal"キーワードの実用的な使用例](http:// stackoverflow。com/questions/165719/actual-for-the-c-sharp-in-c-sharpキーワード) – Kahbazi