C# 将通用事件处理程序与自定义EventArgs一起使用与声明委托之间的权衡是什么?

C# 将通用事件处理程序与自定义EventArgs一起使用与声明委托之间的权衡是什么?,c#,delegates,event-handling,C#,Delegates,Event Handling,我很好奇在声明一个委托之间会有什么不同 public delegate void KeyAddedHandler(string addedKey, string addedValue); 在你的课堂上有一个伴随事件 class Foo { public event KeyAddedHandler KeyAdded; // Other things. } 而不是使用泛型的EventHandler,并创建一个从EventArgs继承来传递信息的类 using System; publ

我很好奇在声明一个委托之间会有什么不同

public delegate void KeyAddedHandler(string addedKey, string addedValue);
在你的课堂上有一个伴随事件

class Foo
{
   public event KeyAddedHandler KeyAdded;
   // Other things.
}
而不是使用泛型的
EventHandler
,并创建一个从EventArgs继承来传递信息的类

using System;
public class KeyValueEventArgs : EventArgs
{
   public string addedKey { get; private set; }
   public string addedValue { get; private set; }
   public KeyValueEventArgs(string key, string value)
   {
      addedKey = key;
      addedValue = value;
   }
}

class Foo
{
   public event EventHandler<KeyValueEventArgs> KeyAdded;
   // KeyAdded += (s, e) => Console.WriteLine($"Added new key: {e.addedKey}.");
}
使用系统;
公共类KeyValueEventArgs:EventArgs
{
公共字符串addedKey{get;private set;}
公共字符串加法值{get;private set;}
public KeyValueEventArgs(字符串键、字符串值)
{
addedKey=键;
加法值=数值;
}
}
福班
{
添加了公共事件事件处理程序;
//keydadded+=(s,e)=>Console.WriteLine($“添加的新键:{e.addedKey}”);
}
谢谢大家!

看,看。