【发布时间】:2019-03-12 19:32:59
【问题描述】:
我需要编写一个方法,将两个员工对象作为输入参数并比较它们的 ID 以确定它们是否匹配。
目前还不完整;但到目前为止,我有一个 Employee 类,它从“Person”类继承名字和姓氏属性,并将 ID 作为自己的属性。我正在员工文件中编写该方法,并且已经在我的程序中实例化了 2 个示例员工。至于重载 ==,我遇到了一个错误,上面写着“Employee”定义了 operator == 但没有覆盖 Object.Equals。”它还说我需要定义“!=”,但我很困惑如何设置 != 重载,当它甚至不包含在此方法中时。
我见过两种比较方法,一种返回真或假,另一种只是将“匹配”写入控制台。其中任何一个都可以满足我的目的,但我无法找到解决这些错误的方法,或者在这种情况下如何更改代码以确定 2 个员工 ID 之间的匹配。下面是我的代码;对于可能出现的问题,我将不胜感激! (我有一种感觉,它可能很不对劲)。我也不确定如何调用该方法,但我目前正在尝试弄清楚。
程序文件:
namespace OperatorOverload
{
class Program
{
static void Main(string[] args)
{
Employee example = new Employee();
example.FirstName = "Kitty";
example.LastName = "Katz";
example.ID = 24923;
Employee example2 = new Employee();
example2.FirstName = "John";
example2.LastName = "Dudinsky";
example2.ID = 39292;
Console.ReadLine();
}
}
}
员工等级:
namespace OperatorOverload
{
class Employee : Person
{
public int ID { get; set; }
public static bool operator==(Employee employee, Employee employee2)
{
if (employee.ID == employee2.ID)
return true;
else
return false;
}
}
}
人员类别:
namespace OperatorOverload
{
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
}
【问题讨论】:
-
是的,这与我的情况非常相似。谢谢 Veverke!
-
引用“当一个类型重载相等运算符时,它还必须重写 Equals(Object) 方法以提供相同的功能。这通常通过编写 Equals(Object) 方法来实现重载的相等运算符,如下例所示。"
标签: c# overloading