これは私の最初の投稿です。私はこのコミュニティに参加することを楽しみにしています。静的メソッドで使用するとC#enum型を静的宣言する必要がないのはなぜですか?
私は当初、コードのコンパイルに問題がありました。私は辞書の中で変換値を呼び出す静的メソッドを持っていました。いくつかの研究の後、メソッドを静的宣言するだけでなく変数も宣言する必要があることを知りました。私を困惑何
はPressur.Unitタイプに対する列挙型がstaticとして宣言する必要がないことです。私はdoubleやint型のような他の変数を使っていましたが、静的メソッド内で使用するにはstaticとも呼ばれる必要があるようです。
は、誰もが、それは、静的と呼ばれることなく動作することができます列挙型について特別であるかを正確に私に説明できますか?実際には、宣言に静的を追加すると、コンパイルエラーも発生します。
この
は、私のコードのスナップショットです:私は現在、Visual Studioの14.0.25431.01アップデートを使用していますpublic class Pressure
{
public enum Unit
{
psi,
psf,
mPa,
Pa,
hPa,
kPa,
MPa,
mmH2O,
mH2O,
inH2O,
ftH2O,
mmHg,
inHg,
atm,
bar,
kgcm2
}
// Conversions for each unit to/from Pa
private static readonly Dictionary<Unit, double> conversions = new Dictionary<Unit, double>()
{
{ Unit.psi, 6894.76 },
{ Unit.psf, 47.9 },
{ Unit.mPa, 0.001 },
{ Unit.Pa, 1 },
{ Unit.hPa, 100 },
{ Unit.kPa, 1000 },
{ Unit.MPa, 1000000 },
{ Unit.mmH2O, 9.80665 },
{ Unit.mH2O, 980.665 },
{ Unit.inH2O, 248.84 },
{ Unit.ftH2O, 2986.08 },
{ Unit.mmHg, 133.322 },
{ Unit.inHg, 3386.39 },
{ Unit.atm, 101325 },
{ Unit.bar, 100 },
{ Unit.kgcm2, 98068}
};
/// <summary>
/// Converts pressure between engineering units.
/// </summary>
/// <param name="value">Pressure value</param>
/// <param name="unitIn">Pressure unit of input value</param>
/// <param name="unitOut">Pressure unit of returned value</param>
/// <returns>Pressure value in the output pressure unit.</returns>
public static double Convert(double value, Unit unitIn, Unit unitOut)
{
return value * conversions[unitIn]/conversions[unitOut];
}
}
あなたは決して非静的メンバにアクセスしていないしているので問題はありません。3.
ありがとうございます。 –