我已经创建了一个通用方法。类型参数可以是任意枚举:
private AdditionalFields GetAdditionalFields<T>(params T[] fields) where T : struct, Enum
{
var fieldTextList = new List<string>();
foreach ( var field in fields )
{
fieldTextList.Add($"F{(int)field}"); // <- Error here
}
// ... do logic
return ...
}当我试图将枚举值转换为整数时,我会得到编译器-错误“不能将'T‘类型转换为'int’。
有人能解释一下为什么会这样吗?T始终是一个枚举,因此应该能够转换为int -还是不?
发布于 2021-01-04 14:33:36
我认为,最好使用特定于枚举的格式字符串来获得枚举的整数表示(一般意义上的整数,而不仅仅是int32)。
fieldTextList.Add($"F{field:D}");您可以在这里找到关于枚举的格式说明符的更多信息:https://learn.microsoft.com/en-us/dotnet/standard/base-types/enumeration-format-strings#d-or-d
https://stackoverflow.com/questions/65563916
复制相似问题