gpt4 book ai didi

.net - 有没有办法使用 ReSharper 自动生成 GetHashCode 和 Equals?

转载 作者:行者123 更新时间:2023-12-03 07:49:09 26 4
gpt4 key购买 nike

在 Eclipse 中,当我用 Java 编写代码时,有一个功能可以自动生成 hashCode()equals() 的基本、高效且无错误的实现> 不消耗脑力。

Visual Studio 或 ReSharper 中是否内置了类似的功能?

最佳答案

是的,Resharper 可以做到这一点。将光标置于您的类型中,打开“生成代码”菜单(Alt+Ins,具体取决于设置或Resharper -> 编辑 -> 生成代码 ),然后选择“平等成员(member)”:

Generate code menu

这将打开一个窗口,您可以在其中选择用于相等的成员,以及有关生成代码的一些选项(例如,您的类型是否应该实现 IEquatable<T> ):

Generate equality members window

如果您从具有两个属性的简单类型开始:

class Person
{
public string FirstName { get; private set; }
public string LastName { get; private set; }
}

然后生成的代码可能类似于:

class Person : IEquatable<Person>
{
public string FirstName { get; private set; }
public string LastName { get; private set; }

public bool Equals(Person other)
{
if (ReferenceEquals(null, other))
return false;
if (ReferenceEquals(this, other))
return true;
return string.Equals(FirstName, other.FirstName) && string.Equals(LastName, other.LastName);
}

public override bool Equals(object obj)
{
if (ReferenceEquals(null, obj))
return false;
if (ReferenceEquals(this, obj))
return true;
if (obj.GetType() != this.GetType())
return false;
return Equals((Person)obj);
}

public override int GetHashCode()
{
unchecked
{
return ((FirstName != null ? FirstName.GetHashCode() : 0) * 397) ^ (LastName != null ? LastName.GetHashCode() : 0);
}
}
}

关于.net - 有没有办法使用 ReSharper 自动生成 GetHashCode 和 Equals?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14652567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com