返回复杂对象或使用引用/输出参数是更好的做法吗?

lin*_*lnk 17 c# methods design-patterns

我正在组合一个应该评估输入的方法,如果满足所有条件则返回true,如果某些测试失败则返回false.如果出现故障,我还希望呼叫者可以获得某种状态消息.

我遇到的设计包括返回bool并为消息使用out(或ref)参数,返回具有bool和string属性的(特别设计的)类的实例,或甚至返回指示pass或特定的enum的枚举错误.什么是从方法中获取所有信息的最佳方法?这些中的任何一个"好"吗?有没有人有其他建议?

Dav*_*ter 13

我通常会尝试返回一个复杂的对象,并在必要时回退到使用out参数.

但是你看一下TryParse.NET转换中的方法,它们遵循返回bool的模式和转换后的值的out参数.所以,我不认为有参数是不好的 - 这实际上取决于你想要做什么.

  • 我发现它非常罕见.通常我必须返回两种不同的类型,而我宁愿不创建第三种类型来包含这两种类型只是为了操作的目的.我知道这听起来很模糊,但我可以指望我必须"做那件事".如果可以,我尽量避免它. (2认同)