类与TryParse静态方法
本文关键字:静态方法 TryParse 类与 | 更新日期: 2023-09-27 17:52:11
我正在接收和表达式(字符串)如下:
String expression = "+name;-age;-city";
我通过使用";"
和interpreting the +/- signs and create a List<OrderRule>
拆分来解析这个表达式。为了包装它,我创建了以下内容:
public class OrderExpression {
public HashSet<OrderRule> Rules { get; set; }
public static Boolean TryParse(String expression, out OrderExpression orderExpression) {
// Parse expression into a List<OrderRule>
if (_parser.ExpressionIsValid(expression)) {
orderExpression = new OrderExpression { Rules = _parser.Parse(expression) }
return true;
else
return false;
}
}
所以我将这样使用:
String expression = "+name;-age;-city";
OrderExpression orderExpression;
OrderExpression.TryParse(expression, out orderExpression);
这有意义吗?我不确定这种架构和命名是否可行。
我对此很挑剔,因为我将使用它作为API的标准,将顺序表达式转换为列表
这是有道理的,但一个想法:
if (_parser.ExpressionIsValid(expression)) {
orderExpression = new OrderExpression { Rules = _parser.Parse(expression) }
您检查一次以确保它是有效的,如果是,则实际解析它。你可以做两次相同的解析吗?
如果ExpressionIsValid
所做的和_parser.Parse
所做的有任何区别,那么ExpressionIsValid
可能返回true
,但_parse.Parse
抛出异常。在这种情况下,该方法将抛出异常,而不是返回false
。
因为这是一个TryParse
函数,目的是使其安全-它将返回true
或false
,但如果解析失败不会抛出异常。
如果这两个方法做的是完全相同的事情,那么也许你应该把它们组合起来,或者用另一个函数来包装它们。但是如果它们不是做同样的事情,那么你应该考虑ExpressionIsValid
返回true
的可能性,但是Parse
抛出异常。