相关疑难解决方法(0)

如何最好地实现自定义类型的等于?

比如说Point2类,以及以下等于:

public override bool Equals ( object obj )

public bool Equals ( Point2 obj )
Run Code Online (Sandbox Code Playgroud)

这是有效C#3中显示的那个:

public override bool Equals ( object obj )
{
    // STEP 1: Check for null
    if ( obj == null )
    {
        return false;
    }

    // STEP 3: equivalent data types
    if ( this.GetType ( ) != obj.GetType ( ) )
    {
        return false;
    }
    return Equals ( ( Point2 ) obj );
}

public bool Equals ( Point2 obj )
{
    // …
Run Code Online (Sandbox Code Playgroud)

.net c# class

34
推荐指数
4
解决办法
5万
查看次数

如果在覆盖Equals()时未能覆盖GetHashCode(),会出现什么问题?

可能重复:
为什么在重写Equals方法时重写GetHashCode很重要?

在C#中,如果在覆盖Equals()时未能覆盖GetHashCode(),那么具体可能出现什么问题?

.net c#

17
推荐指数
1
解决办法
2808
查看次数

等于方法实现助手(C#)

每次我写一些数据类时,我通常会花很多时间编写IEquatable实现.

我写的最后一堂课是这样的:

public class Polygon
{
    public Point[] Vertices { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

实现IEquatable是非常有用的.当然C#3.0/LINQ有很多帮助,但顶点可以移位和/或以相反的顺序移动,这给Equals方法增加了很多复杂性.在经过多次单元测试和相应的实现后,我放弃了,并将我的应用程序更改为仅接受三角形,其中IEquatable实现只需要完全覆盖11个单元测试.

有什么工具或技术可以帮助实现Equals和GetHashCode吗?

.net c# equals iequatable gethashcode

8
推荐指数
1
解决办法
2762
查看次数

IComparable和Equals()

来自MSDN

实现IComparable的类型必须覆盖Equals.Types,覆盖Equals也必须覆盖GetHashCode; 否则,Hashtable可能无法正常工作.

我没理得.谁能解释一下.

c#

8
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×4

.net ×3

class ×1

equals ×1

gethashcode ×1

iequatable ×1