快速创建类型
在本教程中,我们创建一个包含标准方法集的类型。
在 C# 中创建类型或实体可能相当困难。 毕竟,有多少人能手动记住正确实现 Equals()? 幸运的是,ReSharper 可以提供帮助。 让我们来看一下。
首先,让我们定义一个最简单的实体类,称为 Person ,它将存储一个人的姓名和年龄:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
1. 生成构造函数
目前,这个类的初始化很麻烦,因为它没有构造函数。 让我们使用 Generate Code 命令 Alt+Insert 来创建一个。 首先,让我们在类上启动它并选择 构造函数:

现在,我们看到一个对话框,询问我们要初始化哪些属性。 让我们选择所有属性。

按下 完成 后,我们的类就有了一个生成的构造函数:
public Person(string name, int age)
{
Name = name;
Age = age;
}
2. 生成相等成员
假设我们想将 Person 实例保存在一个 HashSet<Person> 集合中。 为此,我们需要实现 Equals() 和 GetHashCode()。 再次,ReSharper 为我们提供了帮助——我们再次调用 生成 命令,并选择 相等性成员。 接下来会显示以下对话框:

选择生成相等运算符(== 和 != )以及 IEquatable<T> 的实现选项后,ReSharper 生成了以下代码:
public bool Equals(Person other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
return string.Equals(Name, other.Name) && Age == other.Age;
}
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 ((Name != null ? Name.GetHashCode() : 0)*397) ^ Age;
}
}
public static bool operator ==(Person left, Person right)
{
return Equals(left, right);
}
public static bool operator !=(Person left, Person right)
{
return !Equals(left, right);
}
3. 生成格式设置成员
现在,我们还希望为一些日志记录和调试获取 ToString() 方法的实现。 再次, 生成 菜单在这里。 我们从菜单中选择 正在设置成员格式 ,选择我们希望出现在 ToString() 中的属性,然后 ReSharper 生成了以下实现:
public override string ToString()
{
return string.Format("Name: {0}, Age: {1}", Name, Age)
}
最后修改日期: 2025年 9月 27日