1. ホーム
  2. c#

[解決済み] パラメータは一定にできるのか?

2023-04-02 04:48:32

質問

私は、C#でJavaの final . それは存在するのでしょうか?

C#には以下のようなものがあるのでしょうか。

public Foo(final int bar);

上記の例では bar は読み取り専用の変数であり、変更することはできません。 Foo() . C#でこれを行う方法はないでしょうか?

例えば、長いメソッドがあり、それを x , y そして z は、あるオブジェクトの座標(ints)である。私は、関数がこれらの値を何らかの形で変更し、それによってデータが破壊されることがないことを絶対に確認したい。したがって、私はそれらを読み取り専用と宣言したいと思います。

public Foo(int x, int y, int z) {
     // do stuff
     x++; // oops. This corrupts the data. Can this be caught at compile time?
     // do more stuff, assuming x is still the original value.
}

どのように解決するのですか?

残念ながら、C#ではできません。

const キーワードは、ローカル変数とフィールドにのみ使用することができます。

readonly キーワードはフィールドにのみ使用できます。

注:Java言語では、メソッドに最終的なパラメータを持つこともサポートしています。この機能はC#には存在しません。

から http://www.25hoursaday.com/CsharpVsJava.html

を編集しました(2019/08/13)。 これが受け入れられて最高位になったので、視認性のために投げておきます。 これでなんとなく in パラメータを使用することができるようになりました。 参照 答え をご覧ください。