1. ホーム
  2. c#

[解決済み] C#のConst関数パラメータ [重複]について

2022-02-14 09:58:36

質問

<ブロッククオート

重複の可能性があります。
C#の読み取り専用("const "ライク)関数パラメータ
C#のconstメンバメソッドとconstパラメータはなぜ存在しないのですか?

過去にC++でプログラミングをしたことがありますが、メソッドの中で定数参照/ポインタのパラメータを作ることができたと記憶しています。

私の記憶が正しければ、以下の意味は、メソッドは参照を変更できず、参照自体は定数参照であるということです。

C++の例

void DisplayData(const string &value) const
{
   std::count << value << endl;
}

C#では、クラス内のメソッドに相当するものはありますか?

なぜこのような質問をするかというと、私はオブジェクトを参照渡し(スピードのため)、同時に誰にも変更されないようにしようとしているからです。

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

更新日:2020年09月16日

があるようです。 in パラメータモディファイア この挙動を示すもの(要するに ref readonly ). どんな時にこれを使うのか、簡単に調べてみると、以下のような答えが返ってきました。

なぜ、C#では"in"パラメータ修飾子を使うことがあるのでしょうか?

オリジナル回答

C#に相当するものがなく、質問されたことがある 多数 , 多数 , 多数 , 多数 を過去に何度も使っている。

もし、誰にも "reference" を変更されたくないのなら、あるいは、オブジェクトの内容を意味するのなら、そのクラスがパブリックなセッターやクラスを変更するメソッドを公開しないようにしてください。もし、クラスを変更できないのであれば、読み取り専用でメンバーを公開するインターフェースだけを実装し、代わりにインターフェース参照を渡すようにします。

もし、メソッドが参照を変更しないようにしたいということであれば、デフォルトでは、"by reference" を渡すと、実際には値によって参照を渡していることになります。メソッドが参照を変更しようとすると、呼び出し側のコピーではなく、ローカルメソッドのコピーにのみ影響します。これは ref キーワードを参照型に設定します。 できる は参照を新しい基礎となるオブジェクトに向け、それを 意志 は呼び出し元に影響を与えます。