1

私が定義したオブジェクト、変数を持つオブジェクトを定義するクラスがあります。この変数の型は、このクラスと同じです。以下を参照してください。

public class _car
{
    public _car()
    {
    }

    _car BMW = null;
}
.
.
.

最後の行は、対象マシンのグローバル定義であることに注意してください。私の質問は、_car クラスにないメソッドで次のようなことを行うかどうかです。

public another_Class
{

    public another_class()
    {
    }
    public _car machine = new _car();

    public int this_Methode()
    {

        if (Machine.BMW == null){
            Machine.BMW = new _car();
            return 1;
        }
        return 0;
    }

public void main_Methode() {

        int i=this_Methode();
        i+=this_Methode();
        //We run main_method in somewhere in our program now you say i is 0 or 1 or2 ?
    }

}

このように考えてください // main_method を実行すると、i の値を教えてくれますか? は 0 か 1 か 2 か?

4

2 に答える 2

1

C# とクラスについてもっと学ぼうとしているようです。参考になりそうなものをいくつか紹介します。適切に回答するにはより多くの情報が必要なため、これはあなたの質問に対する直接的な回答ではありません。しかし、一般的にいくつかの指針が役立ち、問題を明確にすることができます。

クラスでは、プロパティ _car が BMW のインスタンスで初期化されていないため、新しいインスタンスが作成されると null になります。

次に、次の行がありますpublic _car machine = new _car()

この行は、C# ファイルだけに含めることはできないため、おそらくクラス内にあります。これが Console.App からのものである場合、それはおそらくメイン プログラム内にあるため、起動時に実行され、実行時にアプリの残りの部分で使用できるようになります。

another_class には、BMW が null かどうかを確認するメソッドがあり、そうでない場合は新しい車を作成します。BMW は以前に作成されていないため、ここでは常に null になります。

したがって、「グローバル」変数があっても、「another_class」はそれを直接参照していないため、それを見ることはありません。したがって、あなたの質問に対する答えは、「ライブ」ではなく、常に null になるということだと思います。

于 2013-08-17T16:32:22.840 に答える