与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