• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C#のインクリメント演算子のオーバーロード(前置きと後置き))

C#のインクリメント演算子のオーバーロード(前置きと後置き)

このQ&Aのポイント
  • C#のインクリメント演算子をオーバーロードし、後置きインクリメントの場合に戻り値が演算前の結果を返すようにする方法はありますか?
  • Sampleクラスのxとyの値をインクリメントするために、後置きインクリメント演算子をオーバーロードする方法を知りたいです。
  • C#のプログラムで、後置きインクリメント演算子がインクリメントされる前の値を返すようにするためにはどのようにすれば良いのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • yamada404
  • ベストアンサー率56% (9/16)
回答No.1

参考サイトによるとこんな感じで出来る様です。 public static Sample operator ++( Sample smpl ) { Sample tmp = new Sample( smpl.x + 1, smpl.y + 1 ); return tmp; }

参考URL:
http://ufcpp.net/study/csharp/oo_operator.html#overload
nsnaago
質問者

お礼

ありがとうございます。 新しいインスタンスを作成して、それをreturnすれば、呼び出し元の変数に、暗黙のうちにreturnされたインスタンスが代入されるみたいですね。 yamada404さんのメソッドに書き換えたとすると、 Sample sample = new Sample(1, 2); Sample s_const = sample; sample++; // sample変数には、new Sample(2, 3)のインスタンスが代入される // s_constには、最初に作成されたインスタンスのまま インスタンス自体に対して演算しているわけではないことを頭に入れておかないと、とんでもないミスプログラムを書いてしまいそうです。 ちなみに、最初に質問した時のプログラムは、operator ++メソッドが引数がなくて、コンパイルできませんでした。ごめんなさい。