我创建了一个在实例化时需要更改变量值的类。
实施例: 在我的LrgDialogBox类中,我可能有:
public LrgDialogBox(ref oldResult)
{
// bunch of code
UserInput();
}
public UserInput()
{
newResult=false;
}
在我的主类中,我创建了一个名为lrgDia的LrgDialogBox对象,然后输入:
lrgDia = new LrgDialogBox(ref result);
if (result==true) this.exit;
我基本上需要知道如何在我的LrgDialogBox类中使引用变量“oldResult”为private,这样任何方法都可以改变它的值,以便它可以在我的主类中使用。希望不改变我的其他方法的参数。请帮忙。
克里斯
答案 0 :(得分:1)
没有任何方法可以有意义地存储传入的引用参数,并且以后可以修改其值。你需要做的是添加另一层间接;创建一个保留您真正关心的值的引用类型。传递对该类型的引用,然后所有这些引用间接指向单个值。
这种包装器的实现很简单:
public class Wrapper<T>
{
public T Value { get; set; }
}
您现在可以创建一个在构造函数中接受Wrapper<bool>
的类,然后在稍后的时间点修改该包装中的值。
public class Foo
{
private Wrapper<bool> flag;
public Foo(Wrapper<bool> flag)
{
this.flag = flag;
}
public void Bar()
{
flag.Value = false;
}
}
您可以使用的另一个选项,因为在这种情况下,您只在构造函数中调用方法,只是让您的其他方法返回其值,而不是设置私有字段。这将是首选设计:
public class LrgDialogBox
{
public LrgDialogBox(ref bool oldResult)
{
// bunch of code
oldResult = UserInput();
}
public bool UserInput()
{
return false;
}
}
答案 1 :(得分:-1)
在处理过程中只需使用私有变量即可。
private bool _newResult;
public LrgDialogBox(ref bool oldResult)
{
// bunch of code
_newResult = oldResult;
UserInput();
oldResult = _newResult;
}
private void UserInput()
{
_newResult = false;
}