2011-01-18 6 views
0

はサンプルコードです:取得値は、ここで

class Class1 
{ 
    string a; 

    public Class1(string over) : base() 
    { 
     this.a = over; 
     Console.WriteLine(a); 
    } 

    public Class1(bool check) 
    { 
     if(check) 
     Console.WriteLine(a); 
    } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     Class1 myClass1 = new Class1("test"); 
     Class1 myClass2 = new Class1(true); 
     Console.ReadLine(); 
    } 
} 

私は起こるしたい何1NDコンストラクタClass1(string)から文字列の値を取得し、Class1(bool)をコンストラクタにそれを表示することです。どうやってやるの?

+0

「Class1(ブール)」 –

+0

'Console.WriteLine(a);'に空白の結果が表示されているとはどういう意味ですか? – Rye

+1

どうしますか? 2つのオブジェクト**は独立していなければなりません** - ''新しいClass1(真)は '' test ''文字列の存在を知るべきですか?ここでの問題には根本的な問題がいくつかあります。つまり、異なるデザインが望まれます。 –

答えて

1

string aを静的にします。このように、Class1のすべてのインスタンスは同じ文字列を参照します。

+0

ハハハ! *額に叩く*あなたに感謝したことを忘れてしまった! – Rye

+2

これはOPの質問に答えますが、IMOはちょっとした亀裂をちょっと紙に書いています。これは賢明なことです。異なる文字列を持つ複数の 'Class'オブジェクトが必要な場合はどうすればいいですか?スレッディングはどうですか?セキュリティ(他の場所にビジネスを持たない文字列の)?これは* answer *の批判ではありません。なぜ、どういうわけか理由を明確にしていないという問題の不具合... –

0

これはうまくいくはずですが、私はあなたがそうするべきだと思います。

class Class1 {  

    static string a; 

    public Class1(string over) : base() {   
     a = over;   
     Console.WriteLine(a);  
    }  
    public Class1(bool check)  {   
     if(check)   
      Console.WriteLine(a);  
     } 
    } 

    class Program {  
     static void Main(string[] args)  {   
      Class1 myClass1 = new Class1("test");   
      Class1 myClass2 = new Class1(true);   
      Console.ReadLine();  
     } 
    } 
} 
+0

'if(check)'の後に中括弧を忘れたので、あなたのコードはコンパイルされません。 'if(check){'でなければなりません。ネストされたクラスからMainを呼び出さなければならないとは思わない! – froeschli

0

メソッド呼び出しでmyClass2に渡すmyClass1(またはコンストラクタで)

Class1のは、オーバー、チェックので、何をすべきかを伝えるのは難しいです。彼らは私には意味がありません。

2

Class1の2つのインスタンスがあります。myClass1とMyClass2 'a'をインスタンス間で共有する必要がある場合は、静的にすることができます。

このように、Class1のインスタンスで 'a'を設定すると、すべてのインスタンスに適用されます。

関連する問題