2013-03-12 73 views
2

給定一個方法默認爲對象:設置泛型類型PARAM C#

private static T GetBin<T>(string file) 

是否有可能令T默認爲object,如果我使用:

public static byte[] ToJSONBytes<T>(this T obj) 

默認是什麼obj設置爲。但是,這種GetBin方法使用BinaryFormatter對一個文件進行反序列化,正如你們所知道的那樣,它會返回一個對象。我的方法明確地將其轉換爲T然後返回它,但我想使T可選,並且默認爲object

+1

那麼,爲什麼不只是返回'object',讓來電者施放,如果他們想? – Servy 2013-03-12 16:48:45

回答

3

通用類型參數不能有默認值。

但是,他們可以有重載:

private static object GetBin(string file) { return GetBin<object>(file); } 
+0

但泛型參數不是簽名的一部分,所以不會因歧義錯誤而編譯,不是? – Servy 2013-03-12 16:50:09

+0

@Servy:在LINQPad中編譯好,只需測試一下。 – mellamokb 2013-03-12 16:50:55

+0

@Servy:泛型重載(像這樣)確實有效,你正在考慮帶有約束的重載_resolution_; http://blogs.msdn.com/b/ericlippert/archive/2009/12/10/constraints-are-不-部分的最signature.aspx。 – SLaks 2013-03-12 16:51:31