如何使用多个返回值的方法创建类

本文关键字:方法 创建 返回值 何使用 | 更新日期: 2023-09-27 18:30:16

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

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

克里斯

如何使用多个返回值的方法创建类

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

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

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;
    }
}

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

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