我正在尝试编写一个接受通用输入的方法,如果输入是默认值则返回 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);
}
}
}
出于某种原因,C# 不喜欢这样。
它拒绝方法签名(newXElementOrNull)说:
类型参数“T”与外部类型“AddXMLTest.Converter”中的类型参数同名
它突出显示尖括号中的 T 和参数中的 T。
更糟糕的是,它不喜欢 val == default(T) 部分,因为它说运算符“==”不能应用于“T”和“T”类型的操作数。
我究竟做错了什么?