参数'T'与type参数同名

mic*_*ver 4 c# generics

我正在尝试编写一个接受泛型输入的方法,如果输入是默认值则返回null,否则返回XElement.

顺便说一句,我对通用方法非常认真,而且显然是google-fu.

这是我到目前为止所拥有的:

public static class ConversionClass<T>
{
    public static XElement newXElementOrNull<T>(string name, T val)
    {
        if ((T.type == "String") && (val == String.Empty))
        {
            return null;
        }

        if (val == default(T))
        {
            return null;
        }
        else
        {
            return new XElement(name, val);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,C#不喜欢这样.

它在方法签名(newXElementOrNull)上说:

类型参数"T"与外部类型"AddXMLTest.Converter"中的类型参数同名

它突出了角度括号中的T和参数中的T.

更糟糕的是它不喜欢val == default(T)部分,因为它表示Operator'=='不能应用于'T'和'T'类型的操作数.

我究竟做错了什么?

Hen*_*man 5

显然,此方法位于已指定的类中<T>.这意味着您可以省略此类型参数,泛型类的方法也是自动通用的.

我希望也会T.type导致错误,但这取决于外部类的类型约束.要获得完整答案,请发布该类的外部定义(不是所有成员).

它不喜欢 val == default(T)

这很可能是第一次的后续错误.