在 '通過C#CLR' 的page.170:C#中'this'的含義是什麼?
public sealed class Program {
public Int32 GetFive() { return 5; }
public static void Main() {
Program p = null;
Int32 x = p.GetFive(); // In C#, NullReferenceException is thrown
}
}
理論上,上面的代碼是好的。當然,變量p爲null,但在調用非虛擬方法(GetFive)時,CLR需要知道p的數據類型,即Program。如果 GetFive確實被調用,則此參數的值將爲null。由於在GetFive方法中沒有使用參數 ,因此不會引發NullReferenceException。
請原諒我的愚蠢。我記得CLR通過'this'找到了真正的方法代碼,它總是暗示着方法delcare中的第一個參數,爲什麼它說'調用非虛擬方法(GetFive)時,CLR需要知道p'的數據類型?
Ummmm什麼????? –
但「GetFive」是一種實例方法,不是靜態方法。即使您沒有在「GetFive」方法中使用任何實例變量,運行時仍然需要知道該方法正在執行的對象實例。 – feathj
@Kirk Woll我認爲這段文字是 – saus