七月 6

C#中Enum .GetValues (typeof(EnumName ))为什么要加typeof

当我们需要获取某个枚举类型中的所有值时,就需要用到Enum.GetValues方法。一个常见的错误就是直接把枚举的名称当做参数来使用,例如下面的代码:

Enum .GetValues (EnumName);

然而这并不是正确的做法。正确的做法是,还需要在参数中加一个typeof()运算符。你没看错,我也没有写错,typeof()是一个运算符,不是一个方法。正确的写法如下:

也就是Enum .GetValues(typeof(EnumName));

安静本人比较喜欢刨根问底,因此就很好奇为什么要多此一举的加上typeof运算符呢?于是我找了很多的中英文的文档,最终也么找到,大家绝大多数用下面的解释:

GetValues()方法的参数信息显示是这样的:

public static Array GetValues( Type enumType )

要求参数是enumType的类型为Type,而不是Enum。因此在我们要使用typeof获取Enum的类型。

这个方法只是解释了表象,最终还是没能解释深层次的原因。如果有哪位大神碰巧知道,欢迎留言赐教。



文章由安静原创,发表于www.ajnote.com。转载请注明出处

发表 2019年7月6日 自 anjing 类别 "C#学习笔记

发表评论

电子邮件地址不会被公开。 必填项已用*标注