- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想为 ICollection 和 IReadonlyCollection 接口(interface)编写扩展方法(例如 .IsEmpty()
):
public static bool IsEmpty<T>(this IReadOnlyCollection<T> collection)
{
return collection == null || collection.Count == 0;
}
public static bool IsEmpty<T>(this ICollection<T> collection)
{
return collection == null || collection.Count == 0;
}
但是当我将它与实现两个接口(interface)的类一起使用时,我显然得到了“模糊调用”。我不想输入 myList.IsEmpty<IReadOnlyCollection<myType>>()
, 我希望它只是 myList.IsEmpty()
.
这可能吗?
最佳答案
鉴于他们都继承自IEnumerable<T>
您可以通过对其进行扩展来避免歧义问题:
public static class IEnumerableExtensions
{
public static bool IsEmpty<T>(this IEnumerable<T> enumerable)
{
return enumerable == null || !enumerable.Any();
}
}
关于c# - ICollection 和 IReadOnlyCollection 的扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18627958/
我正在为 MultiValueDictionary 创建一个扩展方法封装频繁ContainsKey检查,我想知道创建空 IReadOnlyCollection 的最佳方法是什么?。 到目前为止我使用的
我正在使用 selenium,我正在使用 FindElements 函数,所以我得到了一个实现 IReadOnlyCollection 接口(interface)的元素。我想遍历列表,但 IReadO
SO 上已经有几个类似的问题,但我发现没有一个真正涉及到这个特定主题,所以这里... 我的理解是,应该始终尝试通过具体类返回接口(interface)。不会深入探讨其背后的原因,已经有很多关于它的事情
我有IEnumerable并且需要传递给一个方法作为参数但是这个方法需要IReadOnlyCollection 是否可以转换IEnumerable至 IReadOnlyCollection ? 最佳答
为什么不同的集合(都实现了 IReadOnlyCollection 接口(interface))在试图将它们变成 IReadOnlyCollection 时被编译器以不同的方式处理。 ? IReadO
我想为 ICollection 和 IReadonlyCollection 接口(interface)编写扩展方法(例如 .IsEmpty()): public static bool IsEmpty
以下三种方法是否具有等效的垃圾回收行为? #1 有点牵强,但今天的 C# 编译器是否足够聪明,可以在每次调用方法时优化#2 中的对象创建?我特别不想在方法之外提升数组初始化。 public B
我的模型(使用 Entity Framework 生成,请记住我已针对示例对其进行了简化)如下所示: public class Person { public string Name { ge
我有一个 HashSet,我正试图将其转换为 IReadOnlyCollection,但出现错误: Cannot implicitly convert type 'System.Collections
我想模拟一个继承自 IReadOnlyCollection 的类。我写了一些示例代码来演示我的问题。三项断言中有两项有效。 当我将模拟的 IRemainingSteps 转换为列表或使用 LINQ 时
我正在迭代取自 HTML 的元素。 structureElement 似乎包含找到的元素,但是当我在其上运行 .FindElement() 时,它始终返回第一次迭代的值。这是为什么? 这是我的代码:
.NET 4.5 中新的只读接口(interface),例如 IReadOnlyCollection 和 IReadOnlyDictionary 非常有用,特别是因为它们已在常见的 BCL 类型上实现
我怀疑我对 System.Collection.Generic.IReadOnlyCollection 的理解语义并怀疑如何使用只读和不可变等概念进行设计。让我用 documentation 来描述我
我有一个私有(private)领域IList _elements并想要创建一个返回 IReadOnlyCollection 的属性. public IReadOnlyCollection BaseCl
当我有一个 ICollection 的变量时在 C# 中,我无法将它传递给需要 IReadOnlyCollection 的函数: public void Foo() { ICollection d
我刚刚发现 .NET Fx 现在有 3 个有用的接口(interface): IReadOnlyCollection IReadOnlyList IReadOnlyDictionary 我有点困惑为什
我正在处理对象的 IReadOnlyCollection。 现在我有点惊讶,因为我可以使用 linq 扩展方法 ElementAt()。但我无权访问 IndexOf()。 这对我来说看起来有点不合逻辑
这个问题看起来很简单。虽然documentation说是的: public sealed class KeyCollection : ICollection, IReadOnlyCollect
List工具 IReadOnlyCollection接口(interface)并提供AsReadOnly()返回 ReadOnlyCollection 的方法(它又实现了 IReadOnlyColle
我花了好几个小时思考公开列表成员的主题。在与我类似的问题中,Jon Skeet 给出了很好的答案。请随时查看。 ReadOnlyCollection or IEnumerable for exposi
我是一名优秀的程序员,十分优秀!