c#中如何将一个字符串,转换为一个枚举的名称注意是名称,不是里面的枚举值

c#中如何将一个字符串,转换为一个枚举的名称注意是名称,不是里面的枚举值,第1张

C#获取枚举名称

EnumGetName( typeof(ChartType), seriesChartType )

例如:

EnmFormID formId = (EnmFormID)EnumParse(typeof(EnmFormID), DicKey["名称"]);

1、i的值是从1开始出现的,但是你这个程序总共输出13的3次方次结果,也就是2197次结果,前面的2098次结果被拖屏,找不到了,只输出最后的200次结果。

2、同1,前面的输出找不到。

3、同1

4、没发现错误。

怎么看到全部结果呢?你可以在第二层循环加个暂停语句,这样可以每过一个循环观察一次输出,不过你要按很多次继续,修改如下:

for(l=A;l<=K;l=puke(int(l)+1))

    {

    //cout<<'\n'<<A<<'\t'<<l;

    for(m=A;m<=K;m=puke(int(m)+1))

        for(n=A;n<=K;n=puke(int(n)+1))

        {

            i=i+1;

            cout<<i<<'\t';

            print(l);

            print(m);

            print(n);

            cout<<'\n'<<l<<'\t'<<m<<'\t'<<n<<'\t'<<A;

            cout<<'\n'<<'\n';

            if(i%100==0)

                system("pause");//这里暂停一下

        }

}

:enum设计出来是为了编写代码方便而使用的,底层并不保存枚举量名称,如果你真需要打印出enum的变量名称出来,可以使用下面的方式: typedef enum { A = 0, B, C }ENUM_SAM_T; char p[3]={"A","B","C"}; 然后可以在程序中做如下打印枚举量E的值

具体的枚举类型的使用可以去msdn去看,从你的错误提示看,都是提示类型不匹配的问题。

enum BAND CurrentBand =Band_MW;

enum BAND band;

band=CurrentBand+1;

以上语法是不对的,因为虽然Band_MW有个数字的序号,但是整形和枚举类型还是不同的,需要进行牵制类型转换。针对这个我写了个小程序。

#include<stdioh>

enum BAND {Band_LW,Band_MW,Band_FM,Band_SW,Band_OIRT};

void setFrequency (enum BAND band){

printf("%d\n",band);

}

void main(){

enum BAND CurrentBand =Band_MW;

enum BAND band;

band=(BAND)((int)CurrentBand+1);//这里一定要转换。

setFrequency(band);

}

这样是可以的。我还要说一下,我是用的是VS2008,对不同的编译器可能会不同,希望有帮助。

枚举定义demo

经常使用的几个方法:

枚举属性,get方法,构造方法,通过code获取枚举,获取全部枚举。

通过code获取枚举这个方法,如果有更好的,欢迎留言~

传统枚举类型定义举例:

enum Animal //枚举类型名字

{

monkey, //枚举中的元素值

horse,

lion,

elephant,

pig

}

传统枚举的使用:特点有3个

1、定义的不同枚举类型,枚举中的元素值不能重复出现;作用域是全局

2、枚举变量的值默认转换成int类型,所以输出了cout<<aAnimal<<endl;

3、枚举值可以给int类型的变量赋值也是自动类型转换,枚举类型值先自动转换为int类型。

4、其实传统枚举类型的定义:enum Animal:int{ };也对,在vs2013试的;不算特点

强枚举类型的使用。

总结一下:传统枚举和强枚举类型的区别:

1、强枚举类型: 不会在同一个工程下,因为两个枚举类型有相同的元素值而发生冲突。enum class Person:int //不填也行,因为枚举值默认都必须是int类型

{

man=20,woman=10,noPerson=30

};

enum class KPerson:int

{

man = 20,woman = 10,noPerson = 30

};

2、强枚举类型不会把枚举元素的值自动转换为int类型,即便它是int类型。

Person per = Person::man;

cout << (int)per << endl;

//cout << per << endl; 这样不行

3、传统枚举类型:在同一工程下,不用的枚举类型包含相同的元素是会发生冲突的。

如下这样会发生重复定义的错误

enum Animal :int {monkey = 3,horse = 1,lion = 8,elephant = 18,pig = 1};

enum KAnimal :int{monkey = 3,horse = 1,lion = 8, elephant = 18,pig = 18};

4、传统枚举类型,枚举元素自动转换为int

cout<<monkey<<endl; //自动转换为int。

强枚举:

cout<<(int)Person::man<<endl; //不会自动转换为int ,所以想使用cout函数,就的进行强制转换。

把枚举转换成int型就可以了 。 枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。例如对枚举weekday的元素再作以下赋值: sun=5;mon=2;sun=mon; 都是错误的。 枚举元素本身由系统定义了一个表示序号的数值

以上就是关于c#中如何将一个字符串,转换为一个枚举的名称注意是名称,不是里面的枚举值全部的内容,包括:c#中如何将一个字符串,转换为一个枚举的名称注意是名称,不是里面的枚举值、C++ 枚举类型 扑克牌游戏在13张牌中抽取列出所有结果、如何打印出枚举变量的名称等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9805801.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存