質問を入力しているときに、演算子のオーバーロードのリストが表示されました...質問が並んでいます。それらのほとんどはC++またはHaskell用です。私の質問はC#に関するもので、ロジックは同じである可能性があります。そして私の問題は、C#コンテキストでの演算子のオーバーロードを理解したいということです。
私はチュートリアルを見ていました、そしてそれは示します、
DateTime dt1 = new DateTime();
//do some work
DateTime dt2 = new DateTime();
TimeSpan ts = dt2 - dt1;
そして著者は、-
DateTimeデータ型内での利用が最良の演算子オーバーロードの例であると述べました。私が見ることができるのは、ある日付が別の日付に差し引かれ、TimeSpan
オブジェクトに保存されることだけです。operator
キーワードもキーワードも使用していませんstatic
。
理解しにくいと思います。誰かがここで何が起こっているのか説明できますか?ts = dt2 - dt1
上記の下にpublic static DateTime operator -(DateTime, DateTime)
起こっているという意味ですか?
アップデート:
2番目の例:
//some parameterized constructor is here to set X, Y
public static Point operator +(Point p1, Point p2)
{
Point p = New Point();
p.X = p1.X + p2.X;
p.Y = p2.Y + p2.Y;
return p
{
この場合、オペランドは戻り型と同じ型である必要がありますか?