当我输入问题时,我可以看到运算符重载列表...问题排成一列。其中大多数是用于 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)
事情?
更新:
第二个例子:
//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
{
在这种情况下,操作数必须与返回类型相同?