我有一个我定义的对象,我定义我的对象的类有一个变量。此变量的类型与此类相同,请参见下文:
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你告诉我我有价值吗?是0还是1还是2?
答案 0 :(得分:1)
看起来您正在尝试了解有关C#和类的更多信息。让我给你一些可以帮助你的东西。这不是您问题的直接答案,因为需要更多信息才能正确回答。但是一般的一些指示可能会帮助你解决问题:
在您的班级中,属性_car未使用BMW实例初始化,因此在创建新实例时它将为null。
然后你有一行public _car machine = new _car()
这一行很可能是在一个类中,因为你不能只在它自己的C#文件中。如果这来自Console.App,它可能在主程序中,因此它在启动时运行,然后在运行时可供应用程序的其余部分使用。
在another_class中,你有一个方法可以检查宝马是否为空,如果没有,它会创建一辆新车。宝马在这里永远都是空的,因为之前没有创造过。
所以即使你有“全局”变量,“another_class”也没有直接引用它,所以它不会看到它。所以我认为你的问题的答案是它总是无效,而不是“活着”。
答案 1 :(得分: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的免费版本。只需创建一个控制台应用程序并试用它。这将有助于快速回答这些问题,因为您可以尝试并查看它是否按预期工作。当事情没有按照我认为应该的方式运作时,我会一直这样做。
格雷格