-1

我创建了一个类,该类在实例化时需要更改变量的值。

示例:在我的 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”设为私有,以便任何方法都可以更改它的值,以便可以在我的主类中使用它。希望不改变我的其他方法的参数。请帮忙。

克里斯

4

2 回答 2

1

没有任何方法可以让您有意义地存储传入的引用参数并在以后修改其值。您需要做的是添加另一层间接;创建一个引用类型来保存您真正关心的值。传递对该类型的引用,然后所有这些引用都间接指向单个值。

这种包装器的实现很简单:

public class Wrapper<T>
{
    public T Value { get; set; }
}

您现在可以创建一个Wrapper<bool>在构造函数中接受 a 的类,然后在稍后的时间点修改该包装器中的值。

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;
    }
}
于 2013-09-05T20:36:03.467 回答
-1

只需在处理过程中使用私有变量即可。

    private bool _newResult;

    public LrgDialogBox(ref bool oldResult)
    {
        // bunch of code
        _newResult = oldResult;
        UserInput();
        oldResult = _newResult;
    }

    private void UserInput()
    {
        _newResult = false;
    }
于 2013-09-05T20:31:00.610 回答