0
我有這樣的代碼:如果實例已存在,是否忽略泛型列表構造?
if (null == _priceComplianceSummaryList)
{
_priceComplianceSummaryList = new List<PriceComplianceSummary>();
}
ReSharper的標誌這是個問題,這表明,如果我默許「‘如果’與各自的分支語句替換」,上述變化的代碼:
_priceComplianceSummaryList = new List<PriceComplianceSummary>();
然而,R#似乎更多的是「貓」的皮帶和吊帶類型,它促使我在引用它之前總是檢查是否有空。那麼,這表面上魯莽的行爲其實只是一個效率問題? IOW,「新列表<>」僅在istance變量(_priceComplianceSummaryList)爲空時生成新列表,而不必顯式檢查該列表嗎? 「
「IOW,如果istance變量爲」null「,那麼'new List <>'只會生成一個新列表,而不必明確檢查?不,它不。 – Logerfo
我可以看到R#暗示這一點的唯一原因是因爲當您進行此檢查時,它可以確定'_priceComplianceSummaryList'是* always * null。你在一個構造函數中,沒有靜態初始化字段,使得檢查冗餘。在實例化一個List [List]時,'new'關鍵字沒有什麼特別之處 - 在_priceComplianceSummaryList不會被賦值爲'null'之後,以及之前的任何值(如果有的話),它是null還是不,它將不再有。 –
你可以在你定義這個變量的地方顯示代碼嗎?另外,變量的範圍是什麼?請顯示所有相關的代碼。 –