我有一个C#winform应用程序正在进行大量计算。有一个"运行"按钮来触发过程。我希望能够重新触发或重新运行或重新提交"信息,而无需重新启动程序。问题是我有很多需要重置的变量。有没有办法取消(重置)所有参数?
private Double jtime, jendtime, jebegintime, javerage, .... on and on
答案 0 :(得分:5)
创建存储这些变量的对象的实例。引用此对象,并在想要“重置”时重新实例化您的对象。 e.g。
public class SomeClass
{
public double jTime;
...
}
...
SomeClass sc = new SomeClass();
sc.jTime = 1;
sc = new SomeClass();
答案 1 :(得分:1)
如果你把它们全部放在课堂上,最好的方法就是这样 然后在重置时,您只需创建一个具有初始化值的新类。
答案 2 :(得分:1)
你可以使用反射;虽然Reflection的性能不如其他提议的解决方案,但我不完全确定您的解决方案域,而Reflection可能是一个不错的选择。
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Data data = new Data();
//Gets all fields
FieldInfo[] fields = typeof(Data).GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance | BindingFlags.DeclaredOnly);
foreach (var field in fields)
{
//Might want to put some logic here to determin a type of the field eg: (int, double)
//etc and based on that set a value
//Resets the value of the field;
field.SetValue(data, 0);
}
Console.ReadLine();
}
public class Data
{
private Double jtime, jendtime, jebegintime, javerage = 10;
}
}
}
答案 3 :(得分:0)
是的,只需使用Extract Method重构技术。基本上在单独的方法中提取重置逻辑,然后在需要时调用它
private void ResetContext()
{
jtime = jendtime = jebegintime = javerage = 0;
}