dポイントプレゼントキャンペーン実施中!

開発環境はMicrofoft visual stdio 2005 で開発言語はC#を使い、Windousアプリケーションでプログラミングしているのですが
クラスのオブジェクトを代入すると、値渡しをしたいのに参照渡しになってしまい困っています。
ソースコードで説明すると
class Car
{
  public int a;
}

Car bike = new Car();
Car bike_a = new Car();
Car bike_b = new Car();

bike_a = bike;
bike_b = bike;

bike_a.a = 10;
bike_b.a = 20;

この場合の出力結果(?)を
bike_a.a = 10
にしたいのです。

構造体を使う方法もあるのですが、このクラスは拡張したいので、できればクラスで使いたいのです。
なにかこの問題を解決するような方法はないでしょうか?
ちょと抽象的な質問で申し訳ないのですが、よければ御回答をお願いします。

A 回答 (1件)

(C#の)オブジェクトは参照渡しなので、コピーはそのオブジェクトのメソッドを利用するというのが正しい作法。


C#だと、ICloneableインターフェイスのCloneメソッドを実装するのが良いデザインでしょう。

参考URLのところによると、Object.MemberwiseClone()なるメソッドが存在しているようですので、これを使って実装するのが便利そうですね。

参考URL:http://www.atmarkit.co.jp/fdotnet/csharp_abc/csh …
    • good
    • 0
この回答へのお礼

おお!
こんな関数があったのですね!
まだプログラミングを初めたばかりなので、いろいろ新鮮な事が学べました^^。
親切な御回答ありがとうございました。

お礼日時:2008/06/15 14:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています