与C#中的typedef等效

在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一个文件中的指令包含在另一个文件中。

幸运的是,您提供的示例 确实 有一个修复方法-隐式方法组转换。您可以将事件订阅行更改为:

gcInt.MyEvent += gcInt_MyEvent;

:)

以上是 与C#中的typedef等效 的全部内容, 来源链接: utcz.com/qa/414181.html

回到顶部