csharp的delegate.remove
时间: 2023-08-09 09:06:02 浏览: 87
在 C# 中,从委托中移除方法的语法是使用 `-=` 运算符。具体来说,可以使用委托的 `Remove` 方法或者直接使用 `-=` 运算符来移除委托中的方法。
以下是使用 `-=` 运算符从委托中移除方法的示例:
```
delegate void MyDelegate(string message);
class MyClass
{
public void MyMethod1(string message)
{
Console.WriteLine("Method 1: " + message);
}
public void MyMethod2(string message)
{
Console.WriteLine("Method 2: " + message);
}
}
class Program
{
static void Main(string[] args)
{
MyClass myClass = new MyClass();
MyDelegate myDelegate = new MyDelegate(myClass.MyMethod1);
// 添加方法到委托中
myDelegate += myClass.MyMethod2;
// 从委托中移除方法
myDelegate -= myClass.MyMethod1;
// 调用委托中的方法
myDelegate("Hello World");
}
}
```
在上面的示例中,我们首先创建了一个委托 `MyDelegate`,然后创建了一个类 `MyClass`,并将其方法 `MyMethod1` 和 `MyMethod2` 添加到委托中。接着,我们使用 `-=` 运算符将方法 `MyMethod1` 从委托中移除,最后调用委托中的方法。由于我们已经将方法 `MyMethod1` 从委托中移除,因此调用委托时只会执行方法 `MyMethod2`。
需要注意的是,使用 `-=` 运算符移除委托中的方法时,必须保证要移除的方法确实已经被添加到委托中。否则,会引发 `System.NullReferenceException` 异常。
阅读全文