使用如下代码
public class Task
{
string Name;
public static bool operator ==(Task t1, Task t2)
{ return t1.Name = t2.Name && t1.GetType() == t2.GetType(); }
}
public class TaskA : Task
{
int aThing;
public static bool operator ==(TaskA t1, TaskA t2)
{
return (Task)t1 == (Task)t2 && t1.GetType() == t2.GetType()
&& t1.aThing == t2.aThing; }
}
public class TaskB : Task //more of the same
class Stuffin
{
List<Task> Tasks;
void CheckIt()
{
bool theSame = Tasks[0] == Tasks[1];
}
我正在尝试确保调用派生运算符 (TaskA.==)。
在这里尝试该技术时出现编译错误。
如果运算符不是静态的,我想我可以让它正常工作,因为我可以覆盖基类的运算符。那可能吗?
一旦我知道了,我将如何比较基本属性(我认为转换为任务类型 [(Task)t1 == (Task)t2] 不起作用)?