问题标签 [iequatable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何让 Distinct() 处理自定义对象的集合
我已经按照这篇文章的建议尝试让 Distinct() 在我的代码中工作,但我仍然遇到问题。这是我正在使用的两个对象:
我的目标是用几千个对象填充一个InvoiceItems
对象(我们称之为) ,然后执行:aBunchOfInvoiceItems
InvoiceItem
当我设置并运行此代码时,我收到一条错误消息
无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“InvoiceReader.Form1.InvoiceItems”。存在显式转换(您是否缺少演员表?)
我不明白如何解决这个问题。我应该采取不同的方法吗?非常感谢任何建议。
c# - 我的类的 C# 通用列表包含找不到我的实例的方法
我们为我们的 CMS 准备了几个类,我试图让平等工作,所以我可以检查一个通用列表是否包含一个项目。我们有一些继承层,我将在下面向您展示。在此之下,我将向您展示一些行为与我的预期相反的示例代码。如果您发现我做错了什么,请告诉我。我已经减少了下面的示例,只是为了向您展示相关的部分。我的实际课程要大得多,但我认为这是你需要看到的一切。
IBaseTemplate.cs
BasePage.cs
登陆页面.cs
示例页面.aspx.cs
我希望coll.Contains(p4)
返回true
,因为即使p1
throughp4
是不同的实例,继承的Equals
方法 fromBasePage
也会GUID
根据IBaseTemplate
. 我在这里错过了什么吗?
我查看了List(T) 的 Contains 方法的文档,我正在实现IEquatable<T>.Equals
where T
is IBaseTemplate
。
linq - 具有单个比较类(和接口)的 Linq Distinct
我的应用程序中有几个类,它们都有一个Name
我想用作比较基础的属性(Distinct()
等)。因为我总是要比较Name
,所以我决定提取一个接口 ,ISomeComparedStuff
它只是具有Name
我所有其他类都实现的属性。我这样设置了一个比较类:
唯一的问题是当我尝试对其进行编码时:
我收到一个演员错误(SomeStuff
to ISomeComparedStuff
)。有没有办法做到这一点,所以我只需要一个比较类,否则我必须为我的每个类创建一个(即使我总是要比较Name
)?
注意:我理解这个问题“标题”需要帮助。任何建议都会很棒。
c# - 在 IEquatable 中实施是必要的参考检查
我有一堂课可以实施IEquatable<T>
。是否有必要进行参考检查Equals()
还是在框架中进行了处理?
在上面的例子中,this==other
陈述是多余的还是必要的?
更新 1
我知道我需要更正代码如下:
感谢您的回复。
c# - Linq .Except 函数“至少一个对象必须实现 IComparable。”
基本上我有一个实现 IEquatable 的容器(示例如下所示)
和一个同样实现 IEquatable 的 CustomClass
所有这些都工作正常,例如,以下工作
在此代码之后,枚举时的 diff 和 diff2 都包含预期的结果。但是,如果我再尝试
当我尝试枚举异常列表时,我得到“至少一个对象必须实现 IComparable。”。oldCustom 和 newCustom 与上述工作示例中的唯一区别在于它们的填充方式。有人知道为什么会这样吗?
c# - 当我比较一个对象(类型)时,它是否使用特定类的 IEquatable?
我的方法接收两个Object
类型的参数。它们具有相同的类型,即实现IEquatable
.
我的问题是:当我这样做时:param1 == param2
框架是使用IEquatable
特定类的运算符覆盖进行比较还是使用object.Equals
仅比较两个对象的内存指针?
最好的方法是什么?有泛型和派生约束吗?
c# - collections.Contains(T) 方法
我正在使用System.Collections.Generic
,其中包含我编写的类的实例。
我已经读过 collections.Contains
方法使用object.Equals()
,或者接口中的Equals()
方法的实现。IEquatable
我已经覆盖了对象方法,以及从接口实现。但是,Queue.Contains(instance)
总是返回false。我究竟做错了什么?
例如...
fooInstance2 总是添加到队列中。事实上,当我在调试器上运行它时,永远不会达到 Equals 的实现。
我究竟做错了什么?
c# - 类型对象的多个属性的动态相等检查
我有一个类型:
我已经实现了IEquatable<T>
接口来检查这种类型的两个对象是否相同。当前Equals
方法如下所示:
但我希望以这样一种方式实现此方法,即它可以动态检查所有现有属性(或者可能是这种类型的某些属性)的相等性,而无需像上面那样显式编写用于比较检查的代码。
希望我能够清楚地表达我的问题。:)
谢谢!
c# - 我可以在接口上重载 == 运算符吗?
我有一个这样的界面:
我有多个实现 IFoo 的类。
我想检查相等性,而不是基于 ReferenceEquality,但是如果 A 和 B 相同,则两个 IFoo 应该被认为是相等的(实际上我正在检查通过 WCF 发送的键值对的集合,这就是为什么我可以'没有 ReferenceEquality)。
现在,如果我有:
目前IFoo
是IEquatable<IFoo>
,所以 FooBar1 和 FooBar2 覆盖Equals(IFoo other)
,但这不是在 == 上调用的。我正在寻找我的代码以替换a==b
任何a.Equals(b)
地方,但这并不好。
我能做些什么?
c# - 当对象的标识符为空时,GetHashCode 应该返回什么?
考虑到身份属性可能为空,以下哪一项是正确/更好的。
或者
更新 1:更新了第二个选项。
更新 2:以下是 Equals 实现:
ID是string
类型。