泛型类型参数约束2 - 枚举作为约束类型

先复习下枚举的相关基础知识:

枚举类型(Enum Type)说明

枚举只有一种成员:命名的整型常量的集合

枚举是值类型

使用枚举有效地防止用户提供无效值,使代码更加清晰

定义枚举:

注意:

​ 枚举成员不可以使用修饰符

​ 每个枚举成员底层都是一个常量值

​ 默认情况下,枚举成员的类型是int

​ 默认情况下,编译器把第一个成员赋值为0,后一个成员在前一个成员基础上加1

Enum类型中还可以使用一些有用的静态方法:

GetName方法以枚举类型和整数为参数,返回枚举成员名称

GetNames方法以枚举类型为参数,返回枚举中所有成员的名称,字符串数组

GetValues方法以枚举类型为参数,返回枚举中所有成员的值,返回Array,可以强转成自定义的枚举类型数组或int[].

enum Gender
{
    boy=1,
    girl=2,
    ladyboy=3
}

以下是枚举常用的方法:

//Gender是枚举类型,而boy是Gender类型的常量
Gender boy = Gender.boy;
//根据枚举类型获取指定枚举成员的名称,返回字符串
string singleElementName = Enum.GetName(typeof(Gender),2);
//根据枚举类型获取所有枚举成员的名称,返回字符串数组
string[] Name_AllElements = Enum.GetNames(typeof(Gender));
//根据枚举类型获取指定枚举成员的值,返回Array
Array vals = Enum.GetValues(typeof(Gender));
//将枚举所有成员的值转成Gender类型数组
gender[] values = (Gender[])vals;
//将枚举所有成员的值转成int类型数组
int[] values1 = (int[])vals;
//t1,t2相等
Type t1 = gender.boy.GetType();
Type t2 = typeof(Gender);

C# 7.3版本以后,可以将枚举类型作为泛型类型参数的约束类型,如下demo:

public class MyEnumClass
{
    public string M<T>(T t) where T : Enum
    {
        return Enum.GetName(t.GetType(),t);
    }
}

调用泛型方法如下,即可以返回枚举成员的名称了!

//调用泛型方法,获取指定枚举成员的名称
 string genderElementName_girl = new MyEnumClass().M<Gender>(Gender.girl);

  • 15
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值