在C#中是否存在与typedef等价的东西,或者以某种方式获得了类似的行为?我已经进行了一些谷歌搜索,但是到处看起来都是负面的。目前,我的情况类似于以下情况:
class GenericClass<T> { public event EventHandler<EventData> MyEvent; public class EventData : EventArgs { /* snip */ } // ... snip }
现在,不需要火箭科学家去弄清楚,当尝试为该事件实现处理程序时,这会很快导致很多类型的输入(对可怕的双关语表示歉意)。最终会变成这样:
GenericClass<int> gcInt = new GenericClass<int>; gcInt.MyEvent += new EventHandler<GenericClass<int>.EventData>(gcInt_MyEvent); // ... private void gcInt_MyEvent(object sender, GenericClass<int>.EventData e) { throw new NotImplementedException(); }
除了我而言,我已经在使用复杂类型,而不仅仅是int类型。如果可以简化一点,那就太好了…
编辑:即。也许可以对EventHandler进行类型定义,而不必重新定义它以获得类似的行为。
不,没有typedef的真正等效项。您可以在一个文件中使用“ using”指令,例如
using CustomerList = System.Collections.Generic.List<Customer>;
但这只会影响该源文件。在C和C ++中,我的经验是typedef通常在广泛包含的.h文件中使用- 因此typedef可以在整个项目中使用单个文件。C#中不存在该#include功能,因为C#中没有功能可让您将using一个文件中的指令包含在另一个文件中。
typedef
#include
using
幸运的是,您提供的示例 确实 有一个修复方法-隐式方法组转换。您可以将事件订阅行更改为:
gcInt.MyEvent += gcInt_MyEvent;
:)