class A {public int y;}
struct B{public int x;public A a;}
class Program{
static void Set(B b,int x,int y){
b.x = x;
b.a.y = y;}
static void Main(String[] args){
B b = new B{x = 1,a = new A { y=1 } };
Set(b,2,2);
System.Console.WriteLine(b.x+","+b.a.y);
}
}
為什么輸出1和2,求各位解答
uj5u.com熱心網友回復:
結構是傳值的,不傳址(參考)。uj5u.com熱心網友回復:
我知道你的思維誤區在哪里了。值型別傳值傳遞的是一份拷貝,而參考型別則是傳遞地址,那么按照這句話的理解,你認為輸出的結果應該是1,1,是這意思吧?uj5u.com熱心網友回復:
但這段代碼的特殊之處就在于結構體里有一個類物件。其實傳遞到Set函式里的確實是b的一份拷貝,但這份拷貝的A物件和b本身的A物件指向同一地址,
所以對拷貝物件里的A進行修改會影響到b本身的A物件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/246051.html
標籤:C#
