为什么C#hashset有一个Distinct()方法
当哈希集不能包含重复项时,为什么会有Distinct()方法可用?Distinct方法不在为什么C#hashset有一个Distinct()方法,c#,hashset,C#,Hashset,当哈希集不能包含重复项时,为什么会有Distinct()方法可用?Distinct方法不在HashSet上,而是由HashSet实现的IEnumerable上 某些类型中不能“省略”扩展方法。一旦添加到类型中,所有该类型和任何派生类型都将获得扩展方法 只是为了演示一下,如果您扩展了对象,那么如果您添加了相关的名称空间,您将丢弃所有内容。因此,不要添加: namespace System { public static class ObjectExtensions {
HashSet
上,而是由HashSet
实现的IEnumerable
上
某些类型中不能“省略”扩展方法。一旦添加到类型中,所有该类型和任何派生类型都将获得扩展方法
只是为了演示一下,如果您扩展了对象
,那么如果您添加了相关的名称空间,您将丢弃所有内容。因此,不要添加:
namespace System
{
public static class ObjectExtensions
{
public static void Garbage(this object foo)
{
}
}
}
澄清
Distinct
是IEnumerable
上的一个扩展方法,HashSet
恰好实现了该方法。@jonnyGold是的,我意识到,我只是在你发表评论之前编辑了我的答案。无论如何感谢您的澄清。更准确地说,Distinct
是一种扩展方法,它扩展了IEnumerable
,并驻留在静态类系统中。Linq.Enumerable
。感觉有点像设计的味道me@atlantis我不会说这是一种设计的味道。假设它只是一个普通的接口
,也会产生同样的问题。但是如果HashSet定义了自己的Distinct
方法,那么扩展方法将被隐藏,从而提供了优化的可能性