c# - 使用泛型从枚举中获取最大值
问题描述
如何使用泛型从枚举中获取最大 int 值?
我已经尝试了以下但是它显示以下编译错误:
无法将 T 隐式转换为 int
int maxValue = GetMaxValue<SomeEnum>(typeof(SomeEnum)); //expecting 2
private static int GetMaxValue<T>(Type enumType)
{
return Enum.GetValues(enumType).Cast<T>().Max();
}
public enum SomeEnum
{
ValueOne = 1,
Value = 2
}
解决方案
在 C# 7.3或更高版本的情况下,您可以以不同的方式实现Sweeper 的想法(借助where T : Enum
约束):
public static T GetMaxValue<T>() where T : Enum {
return Enum.GetValues(typeof(T)).Cast<T>().Max();
}
...
SomeEnum max = GetMaxValue<SomeEnum>();
请注意,结果是它本身,这就是为什么我们对枚举基础类型( , , )enum
没有任何问题byte
short
int
long
推荐阅读
- python - 操作错误:无法打开数据库文件(自动化)
- regex - 将正则表达式匹配转换为字符串
- python - 如何删除由类方法函数生成的数据框中的重复元素?
- r - 如何将参数传递到使用 Rscript 中的 argparse 的 R 脚本中
- python - 在 cplex python api 中编写优化约束时出错
- javascript - 尽管主题和生产者都存在,但无法发送 Kafka 消息
- docusignapi - OAuth 调用的 Docusign 速率限制是多少?
- html - HTML5 音频 -- DOMException: 该元素没有支持的来源
- javascript - 在反应或javascript中以模态显示味精
- r - 使用 dplyr 有一种方法可以保留行但将空白添加到选定的重复值