C# 更改哈希集原型C

C# 更改哈希集原型C,c#,hashset,C#,Hashset,我可以更改哈希集的原型吗?我想要实现的是,当创建HashSet时,添加一个属性计数,该计数将在每个.add和.Remove操作期间更新。我认为这比在集合上迭代要好。我也愿意为SortedHash和Dictionary做这件事,SortedDictionary你明白了 编辑:所谓原型,我指的是javascript,比如说Array.prototype。我希望C也是如此。不,不能用C更改原型,因为C不是原型语言。但是,HashSet已经具有.Count属性。如果愿意,可以使用扩展方法添加额外的方法。

我可以更改哈希集的原型吗?我想要实现的是,当创建HashSet时,添加一个属性计数,该计数将在每个.add和.Remove操作期间更新。我认为这比在集合上迭代要好。我也愿意为SortedHash和Dictionary做这件事,SortedDictionary你明白了


编辑:所谓原型,我指的是javascript,比如说Array.prototype。我希望C也是如此。

不,不能用C更改原型,因为C不是原型语言。但是,HashSet已经具有.Count属性。如果愿意,可以使用扩展方法添加额外的方法。扩展属性可能在不久的语言更新中出现。或者:创建子类并在子类中添加属性。

您不必这样做,因为所有这些集合都已经有了一个Count属性,它可以完全满足您的需要

关于更改原型:不。C中没有这样的东西。最接近的应该是扩展方法

假设您希望向HashSet添加一个返回计数的方法:

static class HashSetExtensions // needs to be static
{
   public static int GetCount( this HashSet set ) // notice the 'this' which indicates an extension method
   {
      int count = set.Count; // you can access the public interface of the type in your extension method
      return count;
   }
}
其用法是:

var myHashSet = new HashSet<int>();
var count = myHashSet.GetCount(); // GetCount is the extension method and you call it just like you call a normal method.

所有这些类都有一个计数属性,这听起来像一个计数属性。您询问的是尝试或假设的解决方案,而不是实际问题。实际问题是什么?为什么您认为需要更改原型来修复它?