答案 0 :(得分:2)
实现这一目标的最快,也许最干净的方法是为TryParse
实施您自己的Point.Parse
方法:
public bool TryParse(string source, out Point point)
{
try
{
point = Point.Parse(source);
}
catch (FormatException ex)
{
point = default(Point);
return false;
}
return true;
}
然后你可以这样消费:
Point point;
if (!TryParse("12, 13", out point))
{
// We have an invalid Point!
}
如果您的字符串不是有效点,则该方法将返回false,您可以立即执行任何需要执行的操作。如果解析成功,out
参数将包含已解析的Point
,否则将包含Point
的默认值,该值可能为(0,0)。
请注意,此处正在禁止例外,但这不会给您带来任何麻烦。如果需要,您可以在设置point
后重新抛出它。
答案 1 :(得分:1)
如果你真的阅读了文档,你会看到Point.Parse()
在三种情况下抛出异常:
所以你必须要么:
string.IndexOf()
和string.Substring()
(或RegEx.Match()
)和double.TryParse()
,但是您基本上正在重建Point.Parse()
和无论如何都可以更好地返回new Point { X = parsedX, Y = parsedY }
。