好吧我又来问问题了 关于枚举

Anod 2012-06-25 04:25:09
如果

enum E1
{
A,
B,
C,
D
}
enum E2
{
E,
F
}

中想要实现这样的效果能不能使用类似继承的方法实现
enum E1
{
A,
B,
C,
D
}
enum E2
{
A,
B,
C,
D
E,
F
}
...全文
140 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
Anod 2012-06-26
  • 打赏
  • 举报
回复
打半天字提交失败没了 俺木有内容存入剪贴板的习惯那,,,,为何不默认启用呢?????纠结,,

好吧 结贴了 知道枚举不能继承就行了,谢谢各位
Anod 2012-06-26
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 的回复:]
引用 16 楼 的回复:
啊??回9L 我要的不是根据A的返回来操作,,我要的只是A可能得到的结果的类型,就如我们去买汽车,可能买到很多牌子,但不是根据谁去买汽车买回来的牌子来操作。

回10L B需要的类型除了汽车牌子可能还有其他的附件的牌子,譬如轮胎牌子等,对不同的牌子要有对应的操作,在定义函数的时候,是根据本次操作的牌子来决定操作的步骤。用枚举感觉简洁一些,其他的觉得还要考虑牌子在已有……
[/Quote]

那枚举的话应该是不行了 呵呵 A在处理汽车牌子时 要忽略其他牌子得用一定的方法,简便的话使用判断枚举变量的值 汽车牌子和其他牌子可以用一个阈值分开 只是这个阈值要大一些 不然汽车牌子万一哪天在阈值之上或之下用完的话 阈值要更改就麻烦了,,忽忽 这个帖子就结了吧 俺知道枚举不能继承就O了
__天涯寻梦 2012-06-25
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 的回复:]
啊??回9L 我要的不是根据A的返回来操作,,我要的只是A可能得到的结果的类型,就如我们去买汽车,可能买到很多牌子,但不是根据谁去买汽车买回来的牌子来操作。

回10L B需要的类型除了汽车牌子可能还有其他的附件的牌子,譬如轮胎牌子等,对不同的牌子要有对应的操作,在定义函数的时候,是根据本次操作的牌子来决定操作的步骤。用枚举感觉简洁一些,其他的觉得还要考虑牌子在已有集合外的问题,甚至添加修改麻……
[/Quote]
把汽车牌子和轮胎牌子放一起,处理时只处理汽车牌子,忽略其它的牌子
Anod 2012-06-25
  • 打赏
  • 举报
回复
啊??回9L 我要的不是根据A的返回来操作,,我要的只是A可能得到的结果的类型,就如我们去买汽车,可能买到很多牌子,但不是根据谁去买汽车买回来的牌子来操作。

回10L B需要的类型除了汽车牌子可能还有其他的附件的牌子,譬如轮胎牌子等,对不同的牌子要有对应的操作,在定义函数的时候,是根据本次操作的牌子来决定操作的步骤。用枚举感觉简洁一些,其他的觉得还要考虑牌子在已有集合外的问题,甚至添加修改麻烦,又不值使用一个类,其实使用一个单态类管理牌子应该也可以达到要求,只是对A、B调取各自的牌子没法封装了。
cheng2005 2012-06-25
  • 打赏
  • 举报
回复
A代表的是查询操作的结果集类型。
B代表着后续操作的类型。
从业务上来说,这两个东西一点关系都没有,为什么要有继承的关系呢。
当然,你可能需要一个A-〉B之间的关系映射,不过这跟继承没什么关系。
__天涯寻梦 2012-06-25
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]
好吧 A要对一个文档进行查询操作,查询的结果是什么类型 是用一个枚举类型EA来判断的,
然后B要对这个文档进行更多的操作,操作类型是根据A所有可能查询的结果来判断的,操作类型会比查询结果的类型EA多一些,并且在开发过程中EA可能会变,所以这里想定义为EB,由此产生想使EB继承EA的想法。不知各位有何高见? 俺是新手 才接触C#不到两月
[/Quote]
既然是返回的,只需要定义 EB,返回它该返回的就行了
Anod 2012-06-25
  • 打赏
  • 举报
回复
好吧 A要对一个文档进行查询操作,查询的结果是什么类型 是用一个枚举类型EA来判断的,
然后B要对这个文档进行更多的操作,操作类型是根据A所有可能查询的结果来判断的,操作类型会比查询结果的类型EA多一些,并且在开发过程中EA可能会变,所以这里想定义为EB,由此产生想使EB继承EA的想法。不知各位有何高见? 俺是新手 才接触C#不到两月
cheng2005 2012-06-25
  • 打赏
  • 举报
回复
诡异的设计就会产生诡异的需求,我很有兴趣听听楼主是怎样的设计需求才会想要继承枚举
Anod 2012-06-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
抄一遍得了,没几个字母,要让它变得继承,比不继承还麻烦
[/Quote]

如果两个人维护呢 如果不在同一个文件呢 如果字母很多呢 还有很多如果呃 呃呃 呃
Anod 2012-06-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
抄一遍得了,没几个字母,要让它变得继承,比不继承还麻烦
[/Quote]

如果字母多了呢?且如果两个枚举类型不在同一个文件呢?如果是两个人维护的呢?还有很多如果,,,呃呃
Anod 2012-06-25
  • 打赏
  • 举报
回复
好吧 C#即使继承int 、long等实际上也不是准确的继承,C#枚举是值类型,肿么继承??哎自己还是继续百度吧,GG上不去 汗个。用C#制造可以继承的“枚举” 这个文章已经看了 不符合我的目的
class EnumUse1 : HEnum
{
protected EnumUse1(string name) : base(name) { }

protected EnumUse1(string name, int value) : base(name, value) { }

public static EnumUse1 A = new EnumUse1("A");
public static EnumUse1 B = new EnumUse1("B", 2);
public static EnumUse1 C = new EnumUse1("C", 2);
public static EnumUse1 D = new EnumUse1("D");
}

添加一个元素就得多打多少字母哇,,本是为了减少敲入的代码,并且为了简洁,这倒好,,,,还不如直接如1L一样的复制粘贴快活
__天涯寻梦 2012-06-25
  • 打赏
  • 举报
回复
抄一遍得了,没几个字母,要让它变得继承,比不继承还麻烦
永远的小鱼 2012-06-25
  • 打赏
  • 举报
回复
默认0? 这个很重要么????

我们使用枚举都是直接比较 你难道还要转化为 int比较?????????

E2 x = E2.F;

if(x==E2.E){


}
coffee_sugar 2012-06-25
  • 打赏
  • 举报
回复
你想怎么继承?枚举是没法继承的
Trent1985 2012-06-25
  • 打赏
  • 举报
回复
C#的枚举不允许被继承,这个是你想要的http://www.soaspx.com/dotnet/csharp/csharp_20120216_8591.html
  • 打赏
  • 举报
回复
Anod 2012-06-25
  • 打赏
  • 举报
回复
enum E2:E1
{
E,
F
}
即使能用继承,那么默认的哪个是0,A还是E?网上查不到类似的资料哇,自己动手又不知道原理
__天涯寻梦 2012-06-25
  • 打赏
  • 举报
回复
枚举不能继承

110,535

社区成员

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

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

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