2017-09-26 3 views
0

私は、クラスを制御できないオブジェクトをクラスに渡そうとしています。つまり、メインクラスがオブジェクトを変更すると、作成したクラスにも変更が加えられます。C#コンストラクタの内部値を与えよう

例:

class main 
{ 
    private string test; 

    public main() 
    { 
     var Test = new Test(test); 
    } 
} 

私は今、文字列「test」を変更すると、オブジェクトのテストも変更文字列が表示されるはずです。それは可能ですか?

+0

あなたは何を期待しましたか? – iamsankalp89

+1

テスト文字列のセッターにイベントを追加し、発生時に更新するためにテストオブジェクトに登録します。 – rmjoia

+1

は良いデザインのようには聞こえません。あなたは何をしようとしているのですか – Timeless

答えて

4

文字列の代わりにあなたが特別に細工されたクラスを使用する場合は行うことが可能です:

public class SharedData 
{ 
    public string Test {get;set;} 
} 

あなたがタイプSharedDataの代わりに、文字列のオブジェクトを持っている場合はその後、彼らは価値を共有します。文字列はC#では不変なので、両方のクラスで同じ文字列参照を使用することはありません。

class main 
{ 
    private SharedData test = new ShareData(); 

    public main() 
    { 
     var Test = new Test(test); 
    } 
} 

P.S.これは良いデザインかどうかという別の疑問です。あなたが提供した例に基づいて答えるのは難しいです。私は可能な場合はそのような設計を避け、より少ない状態を必要とする場所でパラメータとして文字列を渡します。しかし、いつものように、あなたがしていることが有益な場合もありますが、デザインを変更して簡単にすることも考えられます。

関連する問題