关于.net:无法在C#中定义T

Cannot define T in C#

本问题已经有最佳答案,请猛点这里访问。

在这段代码中有什么关于如何定义t的线索吗?

1
2
3
4
5
6
7
8
9
10
 public static T ToEnum<T>(this string value, T defaultValue)
        {
            if (string.IsNullOrEmpty(value))
            {
                return defaultValue;
            }

            T result;
            return Enum.TryParse<T>(value, true, out result) ? result : defaultValue;
        }

Severity Code Description Project File Line Error CS0453 The type 'T'
must be a non-nullable value type in order to use it as parameter
'TEnum' in the generic type or method 'Enum.TryParse(string,
bool, out TEnum)'


尝试使用constraint的值类型是struct作为示例:

1
2
3
4
5
6
7
8
9
10
11
public static T ToEnum<T>(this string value, T defaultValue)
      where T : struct
{
    if (string.IsNullOrEmpty(value))
    {
        return defaultValue;
    }

    T result;
    return Enum.TryParse<T>(value, true, out result) ? result : defaultValue;
}

我还没有测试过。