解決済みの質問

質問No.4101536
困ってます
困ってます
お気に入り投稿に追加する (0人が追加しました)
回答数1
閲覧数2818
C#のクラスで値渡しをする
開発環境は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
にしたいのです。

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

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

回答No.1
(C#の)オブジェクトは参照渡しなので、コピーはそのオブジェクトのメソッドを利用するというのが正しい作法。
C#だと、ICloneableインターフェイスのCloneメソッドを実装するのが良いデザインでしょう。

参考URLのところによると、Object.MemberwiseClone()なるメソッドが存在しているようですので、これを使って実装するのが便利そうですね。
投稿日時 - 2008-06-15 02:18:32
この回答を支持する
(現在0人が支持しています)
お礼
おお!
こんな関数があったのですね!
まだプログラミングを初めたばかりなので、いろいろ新鮮な事が学べました^^。
親切な御回答ありがとうございました。
投稿日時 - 2008-06-15 14:50:14
この質問は役に立ちましたか?
0人が「このQ&Aが役に立った」と投票しています
別のキーワードで再検索する
もっと聞いてみる

関連するQ&A

回答募集中

この他の関連するQ&Aをキーワードで探す

-PR-

OKWaveのおすすめ情報

特集

同じカテゴリの人気Q&Aランキング

-PR-

ピックアップ

ノウハウ共有サイト

-PR-
-PR-