簡體   English   中英

C#為什么將一個類實例傳遞給一個接受對象作為參數並將其裝回工作的方法

[英]C# Why does passing of an class instance to a method which accepts object as parameter and boxing it back work

例如,讓我們考慮以下示例。

 class A
 {
  int i;
  string j;
  double t;
 }

 A a =new A();
 MethodCalled(a);

 void Method(object a)
 {
  A newA = a as A; // This will work even though Class A is down casted to System.Object
 }

有人可以幫我理解這一點。 鏈接參考解釋?

謝謝

我沒有看到任何拳擊正在進行。 拳擊是指將值類型(例如int)轉換為引用類型。 在您的示例中,傳遞給方法的值是引用類型( class A )。 拳擊鏈接:

http://msdn.microsoft.com/en-us/library/yz2be5wk.aspx

所以當你調用Method (或MethodCalled ,我認為這是一個錯字)時發生的一切就是該方法接受class A的參數,因為它是一個object 所有引用類型都來自object

我認為你的問題實際上歸結為“作為'運營商做了什么?” 這行代碼:

A newA = a as A;

邏輯上轉換為這個偽代碼:

A newA = null;
if (a can be cast to type A)
    newA = a;

因此,您可以看到'as'運算符將正確設置newA,因為參數的類型實際上是類A.如果您傳遞了class B類型的另一個對象,則as運算符將返回null(假設class B不是從class A派生class A )。 這是一個帶有as運算符的示例的鏈接,這可能有助於解釋一下:

http://msdn.microsoft.com/en-us/library/cscsdfbt.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM