c# 如果一個對象的值為null,那么它調用擴展方法時為甚么不報錯


如果一個對象的值為null,那么它調用擴展方法時會報錯嗎?

Person p = null ;
p.ExtendMethod();

上述代碼出現的情況不會報錯,剛開始遇到這種情況時很納悶,就去問了大牛。大牛解釋如下:

擴展函數其實只是為了讓代碼更具有可讀性, 但最終在clr中會翻譯成標准的靜態函數調用,  

比如:  

 

public static void ExtMethod(this string str) 
{
    if(!string.IsNullOrEmpty(str))
    {
         //對str處理      
    }    
}

 

 

 

調用  "string".ExtMethod()最終會翻譯成ExtMethod("string"); 所以即使為null自然也不會報錯

 

null 為什么點不出那個擴展函數?


  通過null獲取它自己的方法如下:

 

 

  

  這樣試試 ((string)null).ExtMethod() 肯定能點出來 

  

   關鍵是使用擴展函數要看對應的數據類型。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM