在线网站建设者,网站搭建后如何使用,往网站上传照片怎么做,wordpress 列表模板在进行项目的开发的过程中#xff0c; if 语句是少不了的#xff0c;但我们始终要有一颗消灭 if / else 语句的心。为了消灭if / else 我们引入了 短路器 的概念。短路器 有时候的确能精简我们的代码#xff0c;但还不够#xff0c;因此我参考了一个方法来继续消灭一部分 断… 在进行项目的开发的过程中 if 语句是少不了的但我们始终要有一颗消灭 if / else 语句的心。为了消灭if / else 我们引入了 短路器 的概念。短路器 有时候的确能精简我们的代码但还不够因此我参考了一个方法来继续消灭一部分 断路器 中的 if 语句。接下来就让我们拿一段事例代码来一步一步的演示下吧。如下一段比较典型if 断路器 代码if (someConditionIsMet)
{throw new SomeSpecificException(message);
}
//someConditionMetCode这里代码虽然没什么问题但是我个人还是不喜欢用 if 的语句声明。我更喜欢的是Assert.That(someConditionIsMet, message);但是这样子的话我们就无法指定 Exception 的类型了因此我们可能需要的是下面这样子的Assert.ThatMyException(someConditionIsMet, message);但是基类Exception虽然具有无参数的构造函数但是在创建异常之后不允许我再给 Message 进行赋值了。因为Message是Exception 类中的只读属性。public virtual string Message { get; }我的解决方案是使用Activator.CreateInstance并传入要实例化的特定异常类型以及异常消息。如下代码所示public static class Assert
{public static void ThatT(bool condition, string msg) where T : Exception, new(){if (condition){var ex Activator.CreateInstance(typeof(T), new object[] { msg }) as T;throw ex;}}
}至此结束。开头的那段代码就可以通过变通的方式把 if 语句给移除了显得代码更精简你觉得呢当然如果你有更好的处理方式也可以留言告诉我。参考自https://www.codeproject.com/Tips/5289739/Assert-with-assertion