【问题标题】:Resetting vars to their original state将变量重置为其原始状态
【发布时间】: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


【解决方案1】:

我可能误解了你的约束,但如果你想重置一个类中的所有变量,我会考虑为该类添加一个 Reset() 方法,它就是这样做的:将所有属性设置为默认值之一一个。

【讨论】:

  • 是的,我曾想过,但由于有多个类,我将不得不调用 Class1.Reset();, Class2.Reset(); and so on,因为我希望有一种方法可以创建父类,即有子类,当创建该类的新实例时(which sets it to the classes original state) 子类也将如此。将调用减少到一个,而不是多个。
  • 您可以将一个类(“子”)传递给另一个(“父”)的构造函数,并编写“父”的Reset 方法,以便在“孩子”。那怎么样?
  • 我想可以做到,感谢您的意见和对解决方案的帮助:)
【解决方案2】:

正如您自己所说,解决方案是创建一个新的 Test 对象。

public Run() {
        var test = new Test():
        Console.WriteLine(Test.hi);// I'm assuming this should be  'test.hi'
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-24
    • 1970-01-01
    • 2020-08-31
    相关资源
    最近更新 更多