2015-07-02 36 views
0

有沒有辦法在不知道返回類型的情況下分配var查詢。我想將var初始化爲null,然後執行兩種不同類型的查詢,這些查詢返回不同的自定義對象,而無需事先知道哪一個。所以我只在一個方法中初始化一個查詢。將var分配給null以產生兩個不同的查詢

我得到的錯誤是「無法分配給隱式類型的局部變量」。我試圖查看以前的問題和答案,但不明白爲什麼var不能分配爲空。它不是應該稍後分配給收到的對象嗎?有沒有辦法解決這個問題,使用更通用的上層對象類,可以處理這個不知道返回類型?因爲有在null任何類型的信息告訴編譯器它是哪種類型的空事

var query = null; 
if (condition) { 
    query = /* something */ 
} 
else 
{ 
    query = /* something else */ 
} 
+4

「是不是應該稍後分配給收到的對象?」 - 不,該類型是從賦值運算符的第二個操作數的類型推斷的。 'null'文字不*有*類型,因此是問題。 –

+1

如果您不確定將分配哪種類型,請考慮使用工廠模式來初始化您需要的類型。 –

+0

「可以在不知道返回類型的情況下處理這個級別的對象類」 您可以隨時做 對象查詢;雖然我猜想有一個更適合您的需求的較少通用對象。 – PaulBinder

回答

2

var不能被賦值爲null。 var是編譯時的東西 - 它需要在編譯時有一個已知的類型;只是編譯器可以從你指定的內容中找出這種類型。

相關問題