日期:2014-05-17  浏览次数:21105 次

求教:能否将数组(Array)转换为枚举(Enum)类型
比如先声明一个enum,然后再用一个字符串数组或者整数数组转换为enum的变量,如下:

enum typeName/*={a,b,c};*/;
string[] names=new string[]{"a","b","c"};

typeName=(Enum)names;//编译时报错,有没其它方法可实现的;转换后如上enum注释中的值

  我记得好像是可以通过NSString转换的,由于本人C#水平非常有限,实在找不到相关资料——记得当初看到时将转换方式记录的,但一直没找到,或者是我记错,或者记录的文件找不到了,唉。

  非常感谢各位高手帮忙

郁闷想给500分,竟然最高只有100分,这还要限制啊!!!
String enum

------解决方案--------------------
 enum typeName
        {
            a, b, c
        }

 string[] names = new string[] { "a", "b", "c" };
            typeName[] typeNames = names.Select(t => (typeName)Enum.Parse(typeof(typeName), t)).ToArray();
           

------解决方案--------------------
没弄明白,有必要这样去转?既然是写不如直接写成枚举.
2013年06月15日→星座:双子座
二〇一三年五月初八
癸巳〖蛇〗,戊午月,壬子日,乙巳时
今属:水;五行:水火土木;缺:金。
纳音五行:长流水。
------解决方案--------------------
没见过!

如果你如此“转换”了枚举对象,你别的地方如果写代码 var x = c,编译器怎么知道这个c的类型?

如果你是反过来想问题的,那么可以看看Enum的GetNames和GetValues等方法。如果只是一个学生好奇而已才问的那么知道就好了,反正你也问不出什么问题。
------解决方案--------------------
如果你非得要这样的效果的话,你可以自己设计一个转换类,暴露出相应的转换接口。然后通过这个类来实现转换,内部方法的实现可以参考1楼。
------解决方案--------------------
一开始就直接枚举好了~
------解决方案--------------------
额,你真的知道Enum是干什么用滴吗?

Enum是枚举,代表着在设计期就能确定的项,并且起码可以预见在相当长的时间内他不会有什么修改,比如男/女,我至少可以说在天朝正规系统里起码20年内还不会出现人妖这个选项。

如果设计期无法确定,或者他经常变动,选择Enum不是个好选择,因为他需要你修改cs,并且编译,并且重新发布然后通知客户修改

so,解释到这里,你还会觉着Enum的扩展性比你的xml更强吗?