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
}