【发布时间】:2011-07-09 08:10:04
【问题描述】:
可能重复:
Simple way to overload compound assignment operator in C#?
我在玩各种事件,认为事件很奇怪。为什么我不能在通用类中实现它们。所以我尝试并发现我不能过载+=。 From the language specs found here
The overloadable unary operators are:
+ - ! ~ ++ -- true false
The overloadable binary operators are:
+ - * / % & | ^ << >> == != > < >= <=
+= 未列出。现在,在你说没有理由重载 += 之前,我想提出一个事实,即 C# 有使用 += 运算符的事件,以及我试图实现一个有趣的事件并想使用 += 运算符的事实。现在,我感觉有人会说这就是事件存在的原因,因为这是唯一的原因。但是我想提出您可以将 += 与 TimeSpan 结构一起使用。去试试吧,var ts= new TimeSpan(); ts += ts; 会编译运行。
我查看了 TimeSpan 定义,但我不知道它是如何允许的。我看到了一个看起来很可疑的public static TimeSpan operator +(TimeSpan t);,但后来我意识到它类似于var name = +ts;,就像你可以用var name = -ts; 进行否定一样。
所以我的问题是,我如何将 += 用于我的结构或类。它似乎受到支持,我似乎无法找到它的文档。
【问题讨论】:
标签: c# .net operator-overloading