C# 如何获得条件输出参数
方法C# 如何获得条件输出参数,c#,C#,方法DoSomething()确实创建了MyClass的实例,但并不是每个人都想知道MyClass对象,有时如果您只知道操作是否成功,它也适用 这是不可编译的 ref或out参数不能有默认值 当然,我可以简单地删除out关键字,但是我需要首先分配任何变量,这不是我的意图 这可能是一个解决办法,但我希望bool是返回类型 有人知道一个很好的解决方法吗?仅通过重载: public bool DoSomething() { myClass i; return DoSomething(o
DoSomething()
确实创建了MyClass
的实例,但并不是每个人都想知道MyClass对象
,有时如果您只知道操作是否成功,它也适用
这是不可编译的
ref或out参数不能有默认值
当然,我可以简单地删除out关键字
,但是我需要首先分配任何变量,这不是我的意图
这可能是一个解决办法,但我希望bool是返回类型
有人知道一个很好的解决方法吗?仅通过重载:
public bool DoSomething()
{
myClass i;
return DoSomething(out i);
}
public bool DoSomething(out myClass myclass)
{
myclass = whatever;
return true;
}
然后调用
DoSomething()
您可以将参数包装在一个类中
class Arguments
{
public Argument () { Arg = null; }
public Myclass Arg { get; set; }
}
然后像这样使用它:
Arguments args;
if (DoSomething (args))
{
// args.Arg is something
}
并定义如下函数:
bool DoSomething (Arguments args)
{
bool success = false;
if (someaction)
{
args.Arg = new Myclass;
success = true;
}
return success;
}
另外,这让我觉得有点脏,请使用例外:-
Myclass DoSomething ()
{
if (someactionhasfailed)
{
throw new Exception ("Help");
}
return new Myclass;
}
如果不想重载该方法,则始终可以创建一个新类,如:
public class Response
{
public bool Success{get;set;}
public Myclass MyclassInstance {get;set;}
}
并将其用作DoSomething()方法的返回参数,其签名如下:
public Response DoSomething()
{
// Do something
}
只需创建另一个重载
bool DoSomething()
@Dirk这将是一个很好的解决方法,你是我的英雄。。(为了真实而不是讽刺,我真的错过了这一点)但为了清楚起见,省略了几个可选参数,我已经在使用它们作为DoSomething()
的输入,这就是为什么它不是我要求的解决方法。它需要在相同的方法声明中完成。据我所知,这里唯一的问题是'I'没有返回给'DoSomething'的调用者。编辑:重读问题这似乎解决了问题。@Skizz事实上,我越是读OP的问题,我就越不确定自己是否理解正确:/Let’但愿他永远不会为某人写规范@Skizz如果你是需要遵守规范的人,你会怎么做;)@幸运的是:进入无限递归循环?谢谢。。不看感觉有点脏的部分,这是最适合我的答案。“流量控制例外”现在有一罐蠕虫!
public class Response
{
public bool Success{get;set;}
public Myclass MyclassInstance {get;set;}
}
public Response DoSomething()
{
// Do something
}