【发布时间】:2013-02-27 15:53:38
【问题描述】:
当我输入问题时,我可以看到 Operator Overloading... 问题列表。其中大多数是用于 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
{
在这种情况下,操作数必须与返回类型相同?
【问题讨论】:
-
看here