我有一个名为的班级Employee.现在我尝试定义它的Equals方法,但我只想接受Employeeas参数.
所以我写这段代码:
class MainClass
{
public static void Main (string[] args)
{
Employee e = new Employee();
Employee e2 = new Employee();
Console.WriteLine(Equals(e, e2));
}
public static Employee CreateEmployee()
{
return new Employee();
}
}
class Employee
{
public int ID;
public bool Equals (Employee e)
{
Console.WriteLine("Compare!");
return ID == e.ID;
}
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用!控制台输出:
false
Run Code Online (Sandbox Code Playgroud)
不是我的预期:
Compare!
true
Run Code Online (Sandbox Code Playgroud)
看起来我必须写public override bool Equals (Object),但为什么呢?C#不能选择按参数类型调用的方法吗?
尝试将代码更改为
Console.WriteLine(e.Equals(e2));
Run Code Online (Sandbox Code Playgroud)
正如您所拥有的那样,它使用的是Object.Equals方法(对象,对象)
| 归档时间: |
|
| 查看次数: |
185 次 |
| 最近记录: |