问一下delegate和enum的问题

csrwgs 2012-04-13 06:41:09
enum p1enum { p1, p2, p3 };
void p1(p1enum i1)
{
;
}

enum p2enum { p1, p2, p3 };
void p2(p2enum i1)
{
;
}

delegate void del_p(Enum i);
void p(int i,int j)
{
del_p pp;
if (i == 1)
{
pp = new del_p(p1); //---------出错!
}
else
pp = new del_p(p2); //---------出错!
}


想用代理做个通用的,请问如何解决?

http://topic.csdn.net/u/20070524/10/110d261d-3e1c-4c92-b6b6-cdef0da2f104.html#
提到了用Enum来做enum的基类,但是我搞不定

PS:不要跟我提 enum->int
...全文
171 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
csrwgs 2012-04-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wddw1986 的回复:]

这个枚举一点关系都没有。
你知道方法的签名是什么意思嘛?
委托表示的是一类方法,这类方法除了方法名之外,方法的签名是一样的。
delegate void Funo(object o)
void Funs(string s)
这根本就是两个方法,怎么可能用一个委托来表示,你怎么知道Funs可以处理Funo的委托?

不过委托可以接受逆变。
delegate void Funs(st……
[/Quote]

那你能不能提出点措施,让我的重构性更好?
cheng2005 2012-04-16
  • 打赏
  • 举报
回复
这个枚举一点关系都没有。
你知道方法的签名是什么意思嘛?
委托表示的是一类方法,这类方法除了方法名之外,方法的签名是一样的。
delegate void Funo(object o)
void Funs(string s)
这根本就是两个方法,怎么可能用一个委托来表示,你怎么知道Funs可以处理Funo的委托?

不过委托可以接受逆变。
delegate void Funs(string s);

viod Funo(object o)
{}

Funs s = new Funs(Funo);

http://msdn.microsoft.com/zh-cn/library/ms173174(VS.80).aspx
csrwgs 2012-04-16
  • 打赏
  • 举报
回复
"Enum is the base class for all enumerations in the .NET Framework."
宝_爸 2012-04-13
  • 打赏
  • 举报
回复
应该是p1enum,p2enum 和Enum没有继承关系

从msdn找到:
he enumeration does not explicitly inherit from Enum; the inheritance relationship is handled implicitly by the compiler.

来自:
http://msdn.microsoft.com/en-us/library/system.enum.aspx
宝_爸 2012-04-13
  • 打赏
  • 举报
回复
我也搞不定。

110,477

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧