0

クラスの 2 つの個別のインスタンスがそれぞれについて知る方法について質問があります。

空のコンソール アプリがあり、2 つの別個の名前空間に 2 つのクラスを追加したとします。

各クラスの詳細は重要ではないので、コンソール アプリケーション プログラムからのこの非常に単純なコードを検討してください。

public static void Main(string[] args)
{
    Namespace1.ClassName = c = new Namespace1.ClassName();
    Namespace2.ClassName2 = c2 = new Namespace2.ClassName2();
}

ここで、(たとえば) ClassName2 のコンストラクターにインスタンスを渡さない限り、 EGc2の知識はありません。c

Namespace2.ClassName2 = c2 = new Namespace2.ClassName2(c);

パラメーターとして渡されたり、のプロパティとして設定されたりせずにc2、 の知識を得る他の方法はありますか?ccc2

私はそうではないと思いますが、私は何度も間違っていたので、明確にした直後です. 私は主に簡単なイエスまたはノーの答えを探していますが、他の詳細も高く評価されています.

4

2 に答える 2

1

プロパティを使用できるため、たとえば、public staticメインメソッドがNamespace3.Programクラス内にある場合は、次のように宣言できます。

// namespace3
public class Program {
     public static Namespace1.Classname c {get;set;}

     public static void Main(string[] args)
     {
        Pragram.c = new Namespace1.ClassName();
        Namespace2.ClassName2 c2 = new namespace2.ClassName2();
     }
} 

次に、ClassName2メソッド呼び出しで

namespace3.Program.c
于 2013-03-01T14:14:25.710 に答える
1

コンストラクター引数以外にできる唯一の方法は、インスタンスClassName2を作成した後にプロパティまたはセッター関数を作成して設定することだと思います。c2

Namespace2.ClassName2 c2 = new Namespace2.ClassName2();
c2.SetC(c);

理論的には、クラスをClassName静的にすることもできますが、それは良い考えではありません。

于 2013-03-01T14:09:04.747 に答える