我正在使用C#创建我的第一个网站。
我注意到在智能感知中出现了一些扩展方法的重复。经过进一步调查,发现这两个扩展方法是:
public static void ThrowNullOrEmpty<T>(this IEnumerable<T> obj, string param)
{
}
public static void ThrowNullOrEmpty(this string obj, string param)
{
}
看起来字符串也可以是 IEnumerable<char>
。
从编译的基础上,我可以移除字符串变量,但我是否需要注意任何性能问题或其他问题?
更新:
刚刚进行了100万次迭代测试。
public bool IsNullOrEmpty1(string @this)
{
return String.IsNullOrEmpty(@this);
}
vs
public bool IsNullOrEmpty2<T>(IEnumerable<T> @this)
{
return @this == null || !@this.Any();
}
我的开发机上,IsNullOrEmpty1 的时间为12毫秒,而 IsNullOrEmpty2 为125-250毫秒,因此慢了10-20倍。
在真实世界中,我每月执行了30m次迭代,这相当于每分钟1388个(12小时工作日)。两者的结果都不到1毫秒。
因此,删除 IsNullOrEmpty1 不是最佳方法,但也不会对网站造成致命影响。