是否可以再次调用构造函数,如下所示:
public ClassName() { Value = 10; } public void Reset() { // Reset ClassName(); }
或者这是唯一的方法:
public ClassName() { Reset(); } public void Reset() { // Reset Value = 10; }
解决方法
可以使用Reflection多次调用构造函数,因为构造函数是一种特殊方法,因此可以将其称为方法.
public void Reset() { this.GetType().GetConstructor(Type.EmptyTypes).Invoke(this,new object[] { }); }
汉斯:这不是你应该怎么做的.如果你想将对象重置为某些默认设置,只需为它做一些辅助,私有方法,也可以从构造函数调用:
public ClassName() { Defaults(); } public void Reset() { Defaults(); } private void Defaults() { Value = 10; }