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;
    }

公共无效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 在这里永远是空的,因为它以前没有被创建过。

因此,即使您有“全局”变量,“another_class”也没有直接引用它,所以它不会看到它。所以我认为你的问题的答案是它永远是空的,而不是“活的”。

于 2013-08-17T16:32:22.840 回答
1

编辑后回复:

目前尚不清楚 Machine.BMW 来自何处。但是如果它在运行时可用,那么它将通过以下方法填充。所以第一次运行时,它会返回 1 给 I。

public int this_Methode()
{

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

    int i=this_Methode();  //i = 1 as new car was created.

    i+=this_Methode();  Unless there is some other code running, this_Methode() will return zero as the car was already created.

you tell me i's value? Is 0 or 1 or 2?根据您在代码中显示的内容,它将为 1。但如果有其他鳕鱼影响 Machine.BMW 并将其设置为 null,那么它将是 2。

我喜欢在 Visual Studio 中创建一个测试项目来尝试这些事情。您可以使用一个名为 Visual Studio Express 的免费版本。只需创建一个控制台应用程序并尝试一下。这将有助于快速回答这些问题,因为您可以尝试它并查看它是否按预期工作。当某些事情没有按照我认为应该的方式工作时,我总是这样做。

格雷格

于 2013-08-18T17:15:05.310 回答