将运算符应用于非数学对象?

Cor*_*rey 2 c# comparison operators

我很好奇一些运算符如何在对象方面工作(+, - ).

我一直想知道EventHandlers如何通过添加方法来工作:

Foo.Action += new FooActionHandler
Run Code Online (Sandbox Code Playgroud)

如果不是一个事件,那么返回一个比较呢?

DateTime - DateTime
Run Code Online (Sandbox Code Playgroud)

这会返回一个TimeSpan对象,我对这怎么可能感到困惑.我一直使用这些方法,但我从来没有理解它们的内部运作方式.我如何创建自己的类来做这样的事情?

wom*_*omp 10

您可以重载运算符以执行您想要的任何操作. 这里有一些关于如何在C#中完成它的好文档.

它的要点是为操作员(您的类)提供上下文以及参数对其进行的操作.示例可能如下所示:

   // Overload '+' for my class
   public static MyClass operator +(MyClass c1, MyClass c2) 
   {
      MyClass newMyClass = new MyClass();
      newMyClass.MyIntProperty = c1.MyIntProperty + c2.MyIntProperty;
      return newMyClass;
   }
Run Code Online (Sandbox Code Playgroud)