我正在尝试规范化在一个C#项目中使用"out"关键字的用法,特别是对于任何公共方法。我似乎找不到任何最佳实践,并想知道什么是好的或不好的。
有时我会看到一些方法签名看起来像这样:
public decimal CalcSomething(Date start, Date end, out int someOtherNumber){}
目前为止,我只是有一种感觉,这让我感到不舒服。出于某些原因,我更愿意看到:
public Result CalcSomething(Date start, Date end){}
结果是包含十进制数和someOtherNumber的类型。我认为这样更易于阅读,因为它允许扩展Result或添加属性而不会破坏代码。这也意味着调用此方法的用户在调用之前不必声明一个本地作用域的"someOtherNumber"。从使用期望来看,不是所有的调用者都会对"someOtherNumber"感兴趣。
相比之下,我现在能想到的在.NET框架中唯一适用“out”参数的实例是尝试解析(TryParse())之类的方法。这些实际上使调用者编写更简单的代码,因为调用者主要关心的是out参数。
int i;
if(int.TryParse("1", i)){
DoSomething(i);
}
我认为只有在返回类型为bool且期望的用法是"out"参数始终对调用者感兴趣时,才应使用"out"。
你怎么看?