本段代码实现了一个名为`Student`的学生类,该类包含学号(id)、姓名(name)以及年龄(age)三个主要属性。同时,还重写了基类`Object`中的`ToString()`方法以方便输出对象信息。
编写一个名为`Student`的类,该类包含三个属性:学号(id)、姓名(name)以及年龄(age)。需要覆盖基类Object中的`ToString()`方法与`Equals()`方法,使得直接输出`Student`对象时能够显示其id、name和age的信息。同时规定两个对象如果拥有相同的学号则认为它们相等。
接下来,请编写主函数以测试上述定义的类功能。
以下是具体的实现步骤:
1. 创建一个名为 `Student` 的类,并添加三个属性:整型变量 `Id`, 字符串类型变量 `Name`, 以及整数类型的年龄变量 `Age`.
2. 覆盖基类中的方法,重写`ToString()` 方法以便直接输出对象的 id, name 和 age信息。
3. 实现一个自定义的`Equals()` 方法来比较两个 Student 对象是否相等,依据是它们是否有相同的学号(id)。
示例代码如下:
```csharp
using System;
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
// 重写 ToString 方法,输出对象的 id, name 和 age信息。
public override string ToString()
{
return $Id: {Id}, Name: {Name}, Age: {Age};
}
// 实现 Equals 方法来比较两个 Student 对象是否相等
public override bool Equals(object obj)
{
if (obj is Student other)
return Id == other.Id;
return false;
}
// 重写 GetHashCode 方法,确保当对象等于时具有相同的哈希码。
public override int GetHashCode() => Id.GetHashCode();
}
public class Program
{
static void Main(string[] args)
{
var student1 = new Student {Id=1, Name=Alice, Age=20};
var student2 = new Student {Id=1, Name=Bob, Age=30};
Console.WriteLine(student1); // 输出: Id: 1, Name: Alice, Age: 20
Console.WriteLine(student2); // 输出:Id: 1, Name: Bob, Age: 30
if (student1.Equals(student2))
Console.WriteLine(学生对象相等。);
else
Console.WriteLine(学生对象不相等。);
}
}
```
这段代码首先定义了一个`Student`类并实现了所需的方法,然后在主函数中创建了两个具有相同学号但不同姓名和年龄的实例,并通过输出结果来验证实现是否正确。