我有做一些类型转换的方法。如果类型与传递的泛型类型相同,我不想完成整个过程。这是一个片段。检查对象等通用类型
public static T ConvertTo<T>(this object @this)
{
if (typeof(T) == @this.GetType())
return (T)@this;
}
我检查是对象@this已经是这似乎工作类型T,但是这是这样做的最佳方式?
我有做一些类型转换的方法。如果类型与传递的泛型类型相同,我不想完成整个过程。这是一个片段。检查对象等通用类型
public static T ConvertTo<T>(this object @this)
{
if (typeof(T) == @this.GetType())
return (T)@this;
}
我检查是对象@this已经是这似乎工作类型T,但是这是这样做的最佳方式?
您可以使用IsInstaceOfType
方法和is
检查类型。
public static T ConvertTo<T>(this object @this)
{
if (@this is T)
return (T)@this;
else
return default(T);
}
为什么不说'@this是T',而不是'的typeof(T).IsInstanceOfType(@this)'。 –
别的东西一定是错误的。 '@这是T'是一个完美有效的表达。 (我只是测试它以确保我不吸烟)。 –
这也可能工作
public static T ConvertTo<T>(this object @this)
{
return (T)System.Convert.ChangeType(@this, typeof(T));
}
要使用*确切*类型,而不是'is'任何理由吗? –
没有乔恩但作为一个“dotnetnoob”我能得到“是”的语法来为我工作。 – dotnetnoob
的另一件事来检查:你需要这个值类型和引用类型的工作?如果不是这样,那么“where T:class”约束可能使生活变得更简单。 –