C# 如何使一个类具有多个返回值的方法?
我创建了一个类,它需要在实例化变量时更改变量的值 例如: 在我的LrgDialogBox类中,我可能有:C# 如何使一个类具有多个返回值的方法?,c#,class,variables,reference,ref,C#,Class,Variables,Reference,Ref,我创建了一个类,它需要在实例化变量时更改变量的值 例如: 在我的LrgDialogBox类中,我可能有: public LrgDialogBox(ref oldResult) { // bunch of code UserInput(); } public UserInput() { newResult=false; } 在我的主类中,我创建了一个名为LrgDialogBox的LrgDialogBox对象,然后键入: lrgDia = new LrgDialo
public LrgDialogBox(ref oldResult)
{
// bunch of code
UserInput();
}
public UserInput()
{
newResult=false;
}
在我的主类中,我创建了一个名为LrgDialogBox的LrgDialogBox对象,然后键入:
lrgDia = new LrgDialogBox(ref result);
if (result==true) this.exit;
我基本上需要知道如何在我的LrgDialogBox类中使引用变量“oldResult”私有,以便任何方法都可以更改其值,以便在我的主类中使用它。希望不改变其他方法的参数。请帮忙
Kris只需在处理过程中使用私有变量即可
private bool _newResult;
public LrgDialogBox(ref bool oldResult)
{
// bunch of code
_newResult = oldResult;
UserInput();
oldResult = _newResult;
}
private void UserInput()
{
_newResult = false;
}
没有任何方法可以有意义地存储传入的引用参数,并在以后修改其值。你需要做的是添加另一个间接层;创建一个引用类型,该类型保留您真正关心的值。传递对该类型的引用,然后所有这些引用都间接指向单个值 这种包装器的实现很简单:
public class Wrapper<T>
{
public T Value { get; set; }
}
@Steve如果要对引用类型引用的对象进行变异,则不必这样做。如果您需要返回一个新的引用,那么它是必要的。简而言之,如果您希望更改变量中的值,无论它是引用类型还是值类型,这都是必需的。@Steve不,不是。如果它是引用类型,并且希望对引用引用的对象进行变异,那么根本不需要通过
ref
传递它,只需传递值即可。如果希望更改变量的值,即让变量引用一个完全不同的对象,则只能逐个引用传递引用类型。
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;
}
}