我有做一些類型轉換的方法。如果類型與傳遞的泛型類型相同,我不想完成整個過程。這是一個片段。檢查對象等通用類型
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」約束可能使生活變得更簡單。 –