2009-08-11 8 views
5

私は、静的な メソッド内で定数値にアクセスできるのを認識せずにコードを書いています。
静的メソッド内でconst変数を使用できるのはなぜですか?

constの値には、なぜstaticと宣言することなくアクセスできますか。

例えば)それはIMAGE_FILE_EXTENSION

public abstract class ImageDocumentReplacer : DocumentReplacer 
{ 
    private const string IMAGE_FILE_EXTENSION = ".tif"; 

    private static void AddImageToDocument(int documentId, string separatedPath) 
    { 
     Console.WriteLine(IMAGE_FILE_EXTENSION); 
    } 
} 

答えて

17

const
AddImageToDocument(...)内のメンバーを呼び出すために法的だ暗黙的にstaticです。特定のインスタンスではなくクラスに属します。したがって、this.myConstantではなく、MyClass.myConstantを使用することができます。 C#3.0仕様(セクション§10.4定数)引用

定数はstatic部材と考えられるにもかかわらず、定宣言を必要とすることも、static修飾子可能どちら。同じ宣言子が定数宣言に複数回現れるのはエラーです。

+2

静的constを使用してください。コンパイラはおそらく文句を言うだろう;) –

+0

@サミュエル:はい、それはそうです! – Sung

+0

私は決して暗黙のうちに*静的なことは考えていませんでした...ありがとうMehrdad。 – Sung

1

定数はインスタンス間を変更できないため、静的メソッドからのアクセスは安全です。

2

なぜできないのですか?値はコンパイル時に固定されているため、矛盾はありません(実行時に異なるインスタンスに異なる値に初期化できる変数またはreadonlyフィールドがあるため)

関連する問題