问题描述
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 - 或不?
解决方法
我认为,最好使用 enum 特定的格式字符串来获取 enum 的整数表示(一般意义上的整数,不仅仅是 int32)
fieldTextList.Add($"F{field:D}");
您可以在此处找到有关枚举格式说明符的更多信息:https://docs.microsoft.com/en-us/dotnet/standard/base-types/enumeration-format-strings#d-or-d