Delphiでは、メソッド内で定数を宣言し、その同じメソッドで値を割り当てることができます。次回このメソッドを使用するとき、constは最後に割り当てた値と同じ値を保持します。Delphiの割り当て可能なconstに相当するC#はありますか?
それは、Delphiで次のようになります。
(それがテストされていないので、私は、ここではそのことについて申し訳ありませんデルファイを持っていないが、私が何を意味するかを証明するのに十分である)
procedure Form1.test;
const
AssignableConst: Integer = 0;
begin
ShowMessage(AssignableConst);
inc(AssignableConst);
end;
するたびにプロシージャのテストを呼び出します。メッセージボックスに最後の値が表示されます。+ 1
この例はまったく役に立たないです。私は、割り当て可能なconstがDelphiでどのように機能するかを示すことだけです。
これに対応するのはC#ですか?
私は、クラス内にプライベート変数を含むソリューションを望んでいません。メソッド内にとどまっていなければなりません。
私の質問は範囲についてです。他に何もない。値がオブジェクトの状態の一部であることは気にしません。それは重要ではありません。重要なのは、メソッドの範囲からしかアクセスできない変数が必要なことです。それ以外はどこにもありません。
これは、割り当て可能なconstを使用して行うことができますので、C#でこれを行うには?
"私は、クラス内のプライベート変数を含むソリューションは必要ありません。メソッド内にとどまっている必要があります。"どうして?永続的な状態を隠すことは、疑わしいアイデアのように聞こえます。 – CodesInChaos
非 '封印された 'クラスの場合は、フィールドに' private'修飾子を使うだけです。適切に名前を付けることは意味があります。 '_testCounter'(testはメソッド名)の場合、他のメソッドは独自のフィールドを持つことができます。 C#ではローカル静的変数がないので、fieldを使用する必要があります。スコープは重要ではありません。本当に必要な場合は、別のクラスにメソッドをカプセル化しようとすることができます。 – Sinatr
このメソッドは、このconst(または必要な場合は変数)が読み書き可能でなければならない唯一のスコープであるため、 – GuidoG