前提・実現したいこと
インスタンス変数を上書きした際に、同一インスタンスを参照しているクラスにもインスタンスの上書きを適用したいです。
ただし変更を適用する際に再度newを使わずに変更適用できないか考えているのですが可能でしょうか。
追記:プロパティ・メソッドでの更新も行わないで変更できるようにしたいです。
発生している問題・エラーメッセージ
下記プログラムを実行すると
A1
と出力されますが、
A3
が出力されるようにすることは可能でしょうか?
該当のソースコード
C#
1 2 class Program 3 { 4 static void Main(string[] args) 5 { 6 testA a1 = new testA("A1"); 7 testA a2 = new testA("A2",a1); 8 a1 = new testA("A3"); 9 // a2 = new testA("A2",a1); ←このように再度newを書かかずに変更する方法はあるのでしょうか。 10 Console.Write(a2.tempClass.str); 11 Console.ReadKey(); 12 } 13 } 14 15 class testA 16 { 17 public string str { get; } 18 public testA tempClass { get; } 19 20 public testA(string str) 21 { 22 this.str = str; 23 } 24 public testA(string str,testA temp) 25 { 26 this.str = str; 27 this.tempClass = temp; 28 } 29 } 30
試したこと
refを使用すれば出来そうだと思ったのですが、自分の方法ではうまくできませんでした。
補足情報
visual studio 2017
Windows Consoleアプリケーション
「a2 = new testA("A2",a1);とnewを書かずに」というのはa2に対して新しいtestAのインスタンスを作成せずに下記のようにプロパティやメソッドを実装して既存のインスタンスに対しての操作ならOKということでしょうか?
a1 = new testA("A3");
a2.temp = a1;
申し訳ございません、a2.temp=a1;などのプロパティ・メソッドでの更新などは行わずにできないか模索しております。
では
a1 = new testA("A3");
と新しいインスタンスを生成せずに
a1.str = "A3";
という感じで既存のインスタンスの値を変更するのはダメなんでしょうか?
ご返信ありがとうございます。
インスタンス上書きだけで更新ができないかと考えていましたが、インスタンス上書きでの実装は厳しそうなので、実装方法から見直してみます。
ご回答ありがとうございます。
回答2件
あなたの回答
tips
プレビュー