如何在c#中为类创建自定义的添加方法

本文关键字:自定义 创建 添加 方法 | 更新日期: 2023-09-27 18:09:45

在python中,如果你有一个类foo,你可以为它创建一个自定义的add函数,如下所示:

class foo:
    def __add__(self, other):
        return stuff

,这可以让你做这样的事情:

a = foo()
b = foo()
c = a + b

在c#中等效的是什么?

如何在c#中为类创建自定义的添加方法

您可以实现一个operator,例如:

public class Foo
{
   public static Foo operator +(Foo f1, Foo f2) 
   {
      var foo = // some logic to generate a result
      return foo;
   }
}

,然后你可以尝试使用这个操作符:

var a = new Foo() { /* properties initialization */ };
var b = new Foo() { /* properties initialization */ };
var c = a + b;

您可以实现更多的操作符,如-, *, ', |, &,就像上面的示例。

参见https://msdn.microsoft.com/en-us/library/aa288467 (v = vs.71) . aspx

这个特性叫做操作符重载。

你可以在这里阅读:https://msdn.microsoft.com/en-us/library/aa288467%28v=vs.71%29.aspx

简短示例:

class Foo
{
    private int v;
    public Foo(int val)
    {
        v = val;
    }
    public static Foo operator +(Foo x1, Foo x2)
    {
        return new Foo(x1.v+ x2.v);
    }
}
static void Main(string[] args)
{
    Foo d1 =  new Foo (10);
    Foo d2 = new Foo(11);
    d2 += d1;
}

您正在寻找的是所谓的"操作符重载"。请看下面的教程:

操作符重载教程

教你如何使用正确的语法为类foo的对象编写+操作符的特定功能。

可以重载operator +

public static MyClass operator +(MyClass m1, MyClass m2) 
{
    // logic goes here
}