[C#] C言語との違い (static, const, readonly)

const と static readonly
変更できないデータの定義で使えそうなやり方はconstとstatic readonlyの2つがある。
値が確定するタイミングは

  • const コンパイル時評価
  • static readonly 実行時評価

のように違っている。
constは宣言時に値を初期化する。constはfieldに対しても使える。
readonly は fieldのみに使うことができる。
C言語では関数の中でstaticな変数を使って情報を保持することができた。
同じことがC#ではできない。
method内のローカルなstatic変数で値を保存することはできない。
C#で以下のようにmethod内でstaticな変数を持とうとすると

using System;
class Manytimecall
{
    public static void Main()
    {
        PrintInfo(100);
        PrintInfo(1000);
    }

    static  void PrintInfo(int v)
    {
         static int a;
         a = v;
         Console.WriteLine("A=", a);
    }
}

以下のようなコンパイルエラーが発生する。

staticvar.cs(13,3): error CS0106: 修飾子 'static'
がこの項目に対して有効ではありません。
広告
%d人のブロガーが「いいね」をつけました。