问题描述
publicstaticboolHas<T>(thisEnumtype,Tvalue){boolresult;try{result=(((int)type&(int)((object)value))==(int)((object)value));}catch{result=false;}returnresult;}如上代码(int)type这里提示错误14无法将类型“System.Enum”转换为“int”应该怎么改呢?哪位大哥哥,指点一下喽,小女子在这先谢谢啦!
解决方案
解决方案二:
你直接用Enum.HasFlag不就好了
解决方案三:
publicstaticclassTestClass3{publicstaticstringHas(thisEnumtype,objectvalue){boolresult;try{stringss=Enum.GetName(type.GetType(),value);returnss;//result=(((int)type&(int)((object)value))==(int)((object)value));}catch{result=false;}return"";}}这样写能不能满足你的需求
解决方案四:
看不懂你这个代码是干神马事情的。如果编程之前说不明白逻辑目的,不如删除。
解决方案五:
如果那样的话,那这个又怎么写呢?publicstaticTRemove<T>(thisEnumtype,Tvalue){Tresult;try{result=(T)((object)((int)type&~(int)((object)value)));}catch(ExceptioninnerException){thrownewArgumentException(string.Format("不能移除类型'{0}'",typeof(T).Name),innerException);}returnresult;}
解决方案六:
引用3楼sp1234的回复:
看不懂你这个代码是干神马事情的。如果编程之前说不明白逻辑目的,不如删除。
这个作用是:判断一个值是否在一个Enum中
解决方案七:
引用5楼alern008的回复:
Quote: 引用3楼sp1234的回复:
看不懂你这个代码是干神马事情的。如果编程之前说不明白逻辑目的,不如删除。这个作用是:判断一个值是否在一个Enum中
那你直接用Enum.HasFlag不就好了
解决方案八:
引用5楼alern008的回复:
Quote: 引用3楼sp1234的回复:
看不懂你这个代码是干神马事情的。如果编程之前说不明白逻辑目的,不如删除。这个作用是:判断一个值是否在一个Enum中
Enum.Equals()
解决方案九:
又或者用反射
解决方案十:
GetType().GetEnumValues