在C#中,如果我返回一个点,但找不到坐标,我应该返回什么?

在C#中,如果我返回一个点,但找不到坐标,我应该返回什么?,c#,C#,首先,这不是一个例外,因为它是正常业务流程的一部分。我试图返回空对象,但这是不允许的。我可以通过返回一个带有负坐标的点来获得,但感觉像是一个黑客。例如,如果我返回(-1,-1),那么我的库的某些用法可能会直接检查与-1的相等性,而不是检查负数。如果我的内部实现发生更改,则-1将中断。您可以通过将返回类型更改为点来返回一个可为空的点。。这样,您也可以返回null 否则,您可以使用(−1.−1) 并经常与之比较PointUtils.InvalidPoint可能比p.x==-1&&p.y==-1更易于

首先,这不是一个例外,因为它是正常业务流程的一部分。我试图返回空对象,但这是不允许的。我可以通过返回一个带有负坐标的点来获得,但感觉像是一个黑客。例如,如果我返回(-1,-1),那么我的库的某些用法可能会直接检查与-1的相等性,而不是检查负数。如果我的内部实现发生更改,则-1将中断。

您可以通过将返回类型更改为
点来返回一个可为空的点。
。这样,您也可以返回
null


否则,您可以使用(−1.−1) 并经常与之比较
PointUtils.InvalidPoint
可能比
p.x==-1&&p.y==-1

更易于阅读,您可以通过将返回类型更改为
Point?
来返回一个可为空的点。这样,您也可以返回
null


否则,您可以使用(−1.−1) 并经常与之比较
PointUtils.InvalidPoint
读起来可能比
p.x==-1&&p.y==-1
更好,你应该将函数的返回类型更改为
Point?
,然后返回
null

你应该将函数的返回类型更改为
Point?
,然后返回
null
点空呢

点怎么样?空的

如果它事后不咬你(即如果你的分数不能为0,0):Point.Empty。

如果它事后不咬你(即如果你的分数不能为0,0):Point.Empty。

你可以更改方法,将
bool isValid
参数取出。如果isValid为false,用户将知道忽略点结果。

您可以更改方法,以从bool isValid
参数中取出一个
。如果isValid为false,用户将知道忽略点结果。

是的,对不起。事实上,我应该睡很长时间;-)是的,对不起。事实上,我应该睡很长时间;-)好吧,这只是(0,0),这可能是一个有效的结果,考虑到OP考虑了负的成员值。足够公平了。如果是这样的话,一个可为零的点是最好的选择。考虑到OP考虑了负的成员值,这仅仅是(0,0)可能是一个有效的结果。足够公平了。如果是这样的话,一个可为空的点是最好的选择。在这种情况下,我通常用另一种方法,将实际结果值作为
out
参数,这样方法结果总是指定成功与否。就像
Integer.TryParse
一样。在这种情况下,我通常以相反的方式执行,并将实际结果值设置为
out
参数,以便方法结果始终指定成功与否。就像
Integer.TryParse
一样。