受Phil Haack's attempt on null or empty coalescing的启发,我试图为
是否有任何方法可以在
我知道我可以改变它们其中一个的名称,但为了保持一致性,我想使用相同的名称。
更新:事实证明,我的扩展方法问题通过修复一个简单而愚蠢的错误解决了(我使用了
string
对象编写一些扩展方法,以及IEnumerable<T>
接口,以简化空值或空检查。然而,我遇到了问题:当我尝试调用AsNullIsEmpty
的string
版本时,编译器会将我的字符串视为IEnumerable<char>
,并且当然会给出错误的返回类型。是否有任何方法可以在
IEnumerable
版本的定义上放置“反约束”,以便我可以告诉编译器在T
的类型不是 string
时使用该版本?类似于:public static IEnumerable<T> AsNullIfEmpty(this IEnumerable<T> items)
where T !: string
我知道我可以改变它们其中一个的名称,但为了保持一致性,我想使用相同的名称。
更新:事实证明,我的扩展方法问题通过修复一个简单而愚蠢的错误解决了(我使用了
str.IsNullOrEmpty()
,这是IEnumerable<T>
上的扩展方法,而不是string.IsNullOrEmpty(str)
...),但由于关于泛型反约束的问题仍然很有趣,所以我不会删除它。