想象我這樣做:使用Linq,var和FirstOrDefault()時檢查默認值?
var player = players.FirstOrDefault();
或任何複雜的LINQ表達式,其中的最後一個函數運行是FirstOrDefault
。
執行後,player
可以default()
。如何在保留var
樣式類型聲明的情況下檢查此問題?它甚至可能在C#中?
1.
if (player == default(Player))
的明確Player
使得var player
覺得自己很沒用。我不如使用Player player = ...
而不是var player ...
,這裏的整個問題是如何保持var
左右。
2.
if (player == default(typeof(player)))
不是編譯。我可以做typeof(Player)
,但看到上面的感覺毫無意義。
3.
if (player == null)
作爲default(any reference type)
是null
。但是,如果Player類是struct
類型,顯然這是不正確的。
我知道,我可以檢查數組的大小,然後做.First()
甚至.DefaultIfEmpty(something)
,但使.FirstOrDefault()
毫無意義,並在.DefaultIfEmpty
情況下,要求您知道類的類型,不服從var
該問題的侷限性。
有沒有什麼辦法可以使用var
來編寫這段代碼,對於所有類型都可以正常工作var可以站在這裏嗎?
爲什麼它在第1點「保持變化」這麼重要? –
所有要點都很重要:)我只是想知道是否可以將類型名稱保留在此表達式之外,並且仍然檢查默認值。 – Pod