将泛型方法中的枚举值转换为 int
Cast enum-value in generic method to int
我创建了一个通用方法。类型参数可以是任何枚举:
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 - 或者不能?
我认为,最好使用特定于枚举的格式字符串来获取枚举的整数表示(一般意义上的整数,不仅是 int32)
fieldTextList.Add($"F{field:D}");
您可以在此处找到有关枚举格式说明符的更多信息:https://docs.microsoft.com/en-us/dotnet/standard/base-types/enumeration-format-strings#d-or-d
我创建了一个通用方法。类型参数可以是任何枚举:
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 - 或者不能?
我认为,最好使用特定于枚举的格式字符串来获取枚举的整数表示(一般意义上的整数,不仅是 int32)
fieldTextList.Add($"F{field:D}");
您可以在此处找到有关枚举格式说明符的更多信息:https://docs.microsoft.com/en-us/dotnet/standard/base-types/enumeration-format-strings#d-or-d