Mat*_*cey 5 c# standards exception conventions
假设具有以下签名的方法
bool TryXxxx(object something, out int toReturn)
Run Code Online (Sandbox Code Playgroud)
toReturn如果TryXxxx返回false,它可以接受什么?
在这种情况下,toReturn如果TryXxxx失败,它永远不应该被使用吗?
如果toReturn是一个nulable类型,那么返回null是有意义的.但是int不可空,我不想强迫它.
如果失败时toReturn总是某个值,那么TryXxxx我们就有可能认为2个值可以表示相同的位置.如果将'default'值作为有效响应TryXxxx返回(返回true时),我可以看到这可能导致混淆.
从实现点来看,如果看起来像toReturn[ny]值是最简单的,但有什么更重要的考虑吗?
我会明确地将其记录为使用类型的默认值(无论该类型是什么;在这种情况下为0,但default(T)在更一般的情况下).在不同情况下,如果值不存在,则默认值正是您想要的 - 在这种情况下,您可以忽略方法的返回值.
请注意,这就是方法int.TryParse和Dictionary.TryGetValue做法.