public static bool IsNullOrEmpty(this Array value){ return (value == null || value.Length == 0);}
和
public static bool IsNullOrEmpty<T>(this T[] value){ return (value == null || value.Length == 0);}
一个人比另一个人有优势吗?
解决方法 第一个适用于任何数组,包括矩形数组和下限非零的数组.当数组的编译时类型只是数组时,它也会起作用,这可能偶尔会发生在类型相当弱的API上.简而言之,第一个更通用,并且应该在第二个的任何地方工作.
(我假设你不想要任何“额外”功能,例如第二种形式的T的额外约束……你只需要一些能找出数组引用是空还是空的东西阵列).
编辑:对于IEnumerable,您将使用:
public static bool IsNullOrEmpty(this IEnumerable value){ if (value == null) { return true; } var iterator = value.GetEnumerator(); try { return !iterator.MoveNext(); } finally { // Non-generic IEnumerator doesn't extend Idisposable Idisposable disposable = iterator as Idisposable; if (disposable != null) { disposable.dispose(); } }}
这当然的缺点是它很容易产生副作用 – 例如,你可以传入liNQ查询,最终会与数据库交谈.
总结以上是内存溢出为你收集整理的c# – 关于两种不同类扩展模式的问题全部内容,希望文章能够帮你解决c# – 关于两种不同类扩展模式的问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)