当前位置: 首页 > 编程语言 > C#

IEqualityComparer和singleton分享

时间:2023-04-10 16:35:25 C#

IEqualityComparer和singleton我想知道是否可以使用singleton作为comparerObject,比如Distinct??假设我有一个元素列表,我需要在该列表中使用不同的函数。通常我会这样做varresult=list.Distinct(newListElementComparer);ListElementComparer是一个实现IEqualityComparer接口的类。但是让我们假设我会经常使用上面提到的代码,例如像那样。列表<列表>elementList=new列表<列表>();列表<列表>resultList新列表<列表>();foreach(elementList中的var元素)resultList.AddRange(element.Distinct(newListElementComparer()));因此,您可以多次创建ListElementComparer对象。在这种情况下,在每次迭代中创建一个包含单一内容的ListElementComparer是否有意义?如果我使用单例,独特的方法会起作用吗?是的,绝对,单例工作得很好:publicclassListElementComparer:IEqualityComparer>{}}privatestaticreadonlyListElementComparerinstance=newListElementComparer();privateListElementComparer(){}//ImplementIEqualityComparer>here}Then:resultList.AddRange(element.Distinct(ListElementComparer.Instance);请注意,您可以在某种程度上避免整个循环:varresultList=elementList.SelectMany(x=>x.Distinct(ListElementComparer.Instance)).ToList();(这与原始声明的类型不太一致,因为您的示例代码也不起作用......但类似的东西确实如此。)这就是它的全部共享附C#学习教程:IEqualityComparer和singleton,如果对您有用,需要进一步了解C#学习教程,希望您多加关注——本文收集自网络,不代表立场。如涉及侵权,请点击维权联系管理员删除,如需转载请注明出处: