以下のようなコードで
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] へのキャストは機能しないと思います)?