const (C# リファレンス)

更新 : 2007 年 11 月

const キーワードは、フィールドまたはローカル変数の宣言の修飾に使用されます。このキーワードを使用すると、フィールドまたはローカル変数の値が定数であること、つまりフィールドまたはローカル変数の値は変更できないことを指定できます。次に例を示します。

const int x = 0;
public const double gravitationalConstant = 6.673e-11;
private const string productName = "Visual C#";

解説

定数宣言の型は、宣言で導入されるメンバの型を指定します。定数式は、結果となる値が対象の型、または対象の型に暗黙に変換できる型である必要があります。

定数式は、コンパイル時にすべて評価されます。このため、参照型の定数になりうる値は、string と null に限られます。

定数宣言は、複数の定数を宣言できます。たとえば、次のように宣言できます。

public const double x = 1.0, y = 2.0, z = 3.0;

static 修飾子は、定数宣言では使用できません。

定数は、次に示すように、定数式の一部になることができます。

public const int c1 = 5;
public const int c2 = c1 + 100;
e6w8fe1b.alert_note(ja-jp,VS.90).gifメモ :

readonly キーワードは、const キーワードとは異なります。const フィールドは、フィールドの宣言でしか初期化できません。readonly フィールドは、宣言またはコンストラクタのどちらかで初期化できます。このため、readonly フィールドは、使用するコンストラクタに応じて異なる値を持つことができます。また、const フィールドがコンパイル時定数であるのに対し、readonly フィールドは実行時定数として使用できます。たとえば、public static readonly uint l1 = (uint)DateTime.Now.Ticks; のように使用します。

使用例

public class ConstTest 
{
    class SampleClass 
    {
        public int x;
        public int y;
        public const int c1 = 5;
        public const int c2 = c1 + 5;

        public SampleClass(int p1, int p2) 
        {
            x = p1; 
            y = p2;
        }
    }

    static void Main() 
    {
        SampleClass mC = new SampleClass(11, 22);   
        Console.WriteLine("x = {0}, y = {1}", mC.x, mC.y);
        Console.WriteLine("c1 = {0}, c2 = {1}", 
                          SampleClass.c1, SampleClass.c2 );
    }
}
/* Output
    x = 11, y = 22
    c1 = 5, c2 = 10
 */

この例では、定数をローカル変数として使用する方法を示しています。

public class SealedTest
{
    static void Main()
    {
        const int c = 707;
        Console.WriteLine("My local constant = {0}", c);
    }
}
// Output: My local constant = 707

C# 言語仕様

詳細については、「C# 言語仕様」の次のセクションを参照してください。

  • 6.1.6 暗黙の定数式変換

  • 8.5.2 ローカル定数の宣言

参照

概念

C# プログラミング ガイド

参照

C# のキーワード

修飾子 (C# リファレンス)

readonly (C# リファレンス)

その他の技術情報

C# リファレンス