[英]Avoid boxing & unboxing in generic class
下面是一些快速代碼來說明我的問題。 有什么辦法可以避免這種明顯不必要的拳擊/拆箱?
public class TestClass<T>
{
public T TestMethod()
{
if (typeof(T) == typeof(bool))
{
return true; // doesn't work
return (T)(object)true; // works, but any way to avoid this?
}
return default(T);
}
}
這是處理此處所做操作的唯一方法(為特定的封閉泛型類型返回非默認值)。
使它成為一個靜態字段。
public class TestClass<T>
{
static T TrueIfBoolean = typeof(T) == typeof(bool) ? (T)(object)true : default(T)
public T TestMethod()
{
return TrueIfBoolean;
}
}
這樣,裝箱/拆箱只發生一次。 即使在初始代碼中,這種優化也完全可能由運行時完成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.