- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个类:
private class Part
{
public string Id { get; set; }
public string Class { get; set; }
public override bool Equals(object obj)
{
Part part = obj as Part;
return this.Id == part.Id;
}
}
我还有一个这个类的列表,所以我需要在这个列表上使用 distinct。这就是我所做的:
List<Part> parts = new List<Part>();
//adding items
parts = parts.Distinct().ToList();
但是没有任何反应。谁能告诉我怎么了?
最佳答案
当覆盖 Equals
时,您还必须覆盖 GetHashCode
:
private class Part
{
public string Id { get; set; }
public string Class { get; set; }
// Whenever overiding Equals
// You have to override this method too
public override int GetHashCode() {
return String.IsNullOrEmpty(Id) ? 0 : Id.GetHashCode();
}
public override bool Equals(object obj)
{
Part part = obj as Part;
// if obj is not of Part you should return false
if (Object.ReferenceEquals(null, part))
return false;
return this.Id == part.Id;
}
}
不当行为的原因是 Distinct
first tests GetHashCode
并且只有这样 Equals
。
关于c# - 与我类(class)的名单不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23486761/
我正在努力实现下一个目标: 家长: public class Animal { private List relatives; public List getRelatives() {
是否可以创建一个包含不同类型委托(delegate)的列表?例如考虑这两个委托(delegate): class MyEventArg1 : EventArgs {} class MyEventArg
我的问题几乎与 C equivalent to Fortran namelist 相同 关键区别在于我使用的是 C++/17,想知道是否有更符合 C++ 习惯的方式来解决这个问题。 最佳答案 没有相当
我正在使用具有固定线程池大小的全局执行程序服务。我们有一堆相关任务提交执行并等待 future 列表。 最近,我们遇到了 CPU 利用率高的问题,在调试时我发现对 future 列表中的一项调用 ge
我习惯了 Fortran,其中我使用名称列表顺序读入从文件中获取变量。这让我有一个看起来像这样的文件 &inputDataList n = 1000.0 ! This is the first var
为什么TimePicker在 knockout 名单之外工作得很好,但在他身上就不行了。如何在 knockout 中启动? @{ ViewBag.Title = "Index"; } Index
我正在阅读 https://www.nba.com/history/awards/mvp .我尝试按降序打印出名称和计数。 Kareem Abdul-Jabbar: 6 Bill Russell: 5
我想知道如何在 Python 中轻松地从 Fortran 名单文件读取和写入值。 最佳答案 有一个模块叫做f90nml读取/写入 Fortran 名称列表。使用此模块,您可以将名单读入嵌套的 Pyth
我是一名优秀的程序员,十分优秀!