我想知道下面的語句是否曾經爲參考類型返回不同的結果,還是它們是相同的?默認(T)與Activator.CreateInstance(T)
如果它們是相同的,可以總是使用默認值(T),在此實例中,如果目的是要輸出的T?:
的默認值if (typeof(T).IsValueType || typeof(T) == typeof(String))
{
return default(T);
}
else
{
return Activator.CreateInstance<T>();
}
Best way to test if a generic type is a string? (c#)
TA!
不,引用類型的默認值(T)返回null,CreateInstance()不會產生,因爲它創建了一個類型爲T的對象。很難猜測這段代碼真的嘗試了什麼做。 –
也不是'default(string)'null嗎? – BoltClock
謝謝你澄清混淆!代碼示例是混淆的一部分,我在它下面鏈接的stackoverflow帖子中看到它。 – Cel