Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不能在C中定义T#_C#_.net - Fatal编程技术网

C# 不能在C中定义T#

C# 不能在C中定义T#,c#,.net,C#,.net,在这段代码中有没有关于如何定义T的线索 public static T ToEnum<T>(this string value, T defaultValue) { if (string.IsNullOrEmpty(value)) { return defaultValue; } T result; return

在这段代码中有没有关于如何定义T的线索

 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;
        }
public static T ToEnum(此字符串值,T defaultValue)
{
if(string.IsNullOrEmpty(value))
{
返回默认值;
}
T结果;
返回Enum.TryParse(value,true,out result)?结果:defaultValue;
}
严重性代码说明项目文件行错误CS0453类型为“T” 必须是不可为null的值类型才能将其用作参数 泛型类型或方法“Enum.TryParse(字符串、, bool,out TEnum)'


尝试使用
约束
获得一个值类型,该值类型为
结构
,例如:

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;
}
public static T ToEnum(此字符串值,T defaultValue)
其中T:struct
{
if(string.IsNullOrEmpty(value))
{
返回默认值;
}
T结果;
返回Enum.TryParse(value,true,out result)?结果:defaultValue;
}

我还没有测试过它。

@PetSerAl请写出完整的代码作为答案。非常感谢。请阅读。如果你能定义“this”,你可以搜索它。你想要“枚举的泛型类型约束”吗?比我快一秒!它给出了错误严重性代码描述项目文件行错误CS0451“new()”约束不能与“struct”约束一起使用尝试使用“Enum”作为约束!只需删除
,new()
OP,枚举不能是“新的”
,其中T:enum
在C#中不是有效的模板约束。