相关疑难解决方法(0)

重写System.Object.GetHashCode的最佳算法是什么?

在.NET GetHashCode方法中,很多地方都使用.NET 方法.特别是在快速查找集合中的项目或确定相等性时.是否有关于如何GetHashCode为我的自定义类实现覆盖的标准算法/最佳实践,因此我不会降低性能?

.net algorithm hashcode gethashcode

1389
推荐指数
14
解决办法
19万
查看次数

C#中的不可变类型和属性

C#中的不可变类型和不可变属性是什么意思?你能举一个简单的例子吗?

c# types immutability

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

(C#)重载==运算符时出现问题

我在我的类上重载了==运算符,如下所示:

public static bool operator ==(Table pt1, Table pt2) {
    return Compare(pt1, pt2) == 0 && pt1.TableName == pt2.TableName;
}
Run Code Online (Sandbox Code Playgroud)

比较将像strcmp在c ++中一样工作,返回一个整数.问题是,如果我执行if(MY_CLASS == null),它将调用我的==运算符,从而调用我的Compare函数.什么是alternatiev?检查pt1和pt2以查看它们是否为空?或者只是在pt2?

c# null operator-overloading

4
推荐指数
1
解决办法
2309
查看次数

如何在平等比较中处理空值?

当我必须实现相等比较器

public class SampleClass
{
    public int Prop { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我应该做

null == new SampleClass() 
Run Code Online (Sandbox Code Playgroud)

new SampleClass() == null
Run Code Online (Sandbox Code Playgroud)

new SampleClass().Equals(null)
Run Code Online (Sandbox Code Playgroud)

假?

那怎么样?

new SampleClass() != null
Run Code Online (Sandbox Code Playgroud)

它应该也是假的吗?

更新人们质疑这个问题背后的原因.它应该是!=和==永远是对立的.但是如果我实现这些方法所以所有这些比较都会导致错误,那么将会出现==和!=运算符会产生相同结果的情况.因此,是否应该返回true或false是一个两难的选择.

.net c# operators iequatable equals-operator

3
推荐指数
1
解决办法
324
查看次数