我有下面的代码,其对任何类型的对象的一个空值或空白检查:C# - 最快的方法来做这种类型的空检查?
public static void IfNullOrEmpty(Expression<Func<string>> parameter)
{
Throw.IfNull(parameter);
if (parameter.GetValue().ToString().Length == 0)
{
throw new ArgumentException("Cannot be empty", parameter.GetName());
}
}
它调用下面的GetValue扩展方法:
public static T GetValue<T>(this Expression<Func<T>> parameter)
{
MemberExpression member;
Expression expression;
member = (MemberExpression)parameter.Body;
expression = member.Expression;
return (T)parameter.Compile()();
}
我传递在含有表达字符串在这个方法中进行测试。这种方法在我的机器上平均需要2 ms(即使在我测试的另一台机器上速度更慢),如果在整个应用程序中多次调用该方法,该方法会相加。看起来这种方法太慢了。什么是做这种空检查的最快方法?
你可能会计时JIT。对于新手来说,他们应该有一个很大的警告,不要试图去计时,他们总是会犯错。 – Blindy
当我整个分析应用程序时,我看到类似的结果,就好像我只是单独计时代码一样。 – Andrew
为什么你使用表达呢?为什么不只是'功能'? –
Enigmativity