【发布时间】:2019-10-19 00:44:20
【问题描述】:
不确定如何解释这种情况,所以我会在使用示例时尽力而为..
所以我有一个主类,
Main.cs
//Code
class Main {
public Run() {
while(true)
{
Minor start = new Minor();
start.Run();
}
}
}
小班,
Minor.cs
//Code
class Minor {
public Run() {
Test.hi += 1;
Console.WriteLine(Test.hi);
}
}
测试类,
Test.cs
//Code
class Test {
public int hi = 0;
}
在运行上述示例时,Time.cs 中的整数每次循环都会增加。所以输出将是,运行 3 次。
1
2
3
但是,如果我将public int hi = 0 放在里面,Minor.cs 如下所示
Minor.cs
//Code
class Minor {
public int hi = 0;
public Run() {
hi += 1;
Console.WriteLine(Test.hi);
}
}
输出将始终为1,因为每个循环都会创建一个新的 Minor 实例......现在我知道我可以简单地在 Minor.cs 内创建一个 Test.cs 的新实例,但我有多个在循环期间修改的变量/整数/字符串,但是需要在下一个循环中成为默认值。
除了Main.cs 之外,是否可以通过编程方式将所有类重置为其默认状态,或者是否可以将所有其他classes 继承到Minor.cs 中,以便在创建Minor.cs 的新实例时,那些也有新的实例?
【问题讨论】:
-
欢迎来到 SO 空间代码。我不确定我是否理解您的问题,因为答案似乎很明显;如果你想将一个变量,例如
hi,重置为0,你只需写hi = 0;。或者,如果您真的想变得花哨,我想您可以写hi = default(int)(将其设置为0)。我缺少问题的某些方面吗? -
@JohnWu 我希望它们可能是一种以编程方式/同时将所有整数重置为默认值的方法,类似于创建类的新实例的方式,即
Class test = new Class();,但不是那样做对于每个类,都有一个父类,当创建父类的新实例时,它会为每个子类创建一个新实例 -
我想你已经知道怎么做了,OP。您只需要以不同的方式组织变量。将要重置的变量全部放在一个类中,并在每次迭代时重新实例化该变量;将要保留的变量放在不同的类中,并且只创建一次。
标签: c# class variables structure