[英]C# passing parameter (value or reference)?
有人告訴我,當您將對象傳遞給方法時,它是按“值”傳遞的。 我做了一點測試來檢查它:
Point p = new Point(1, 1);
Circle c = new Circle(p);
p.x = 999;
Console.WriteLine(c.p.x);
上面的代碼打印“ 999”,但我認為對象已復制到方法中
有人告訴我,如果您不使用“ ref”(或“ out”),則該方法將獲得值
對象。
有人可以告訴我嗎?
謝謝,
襪子
假設Point
聲明為class,而不復制p
本身,則復制對p
的引用 。 因此,它仍然通過價值傳遞。 您傳遞引用的值。
當說Point p = new Point(1, 1);
(如果point是引用類型),則可能會認為它是一個包含Point
的變量,但實際上它是一個包含對Point
的引用的變量,該引用存儲在其他地方。
C#是按值傳遞-在正常情況下即傳遞參考值。 (這意味着它是對同一對象的新引用)
Point
是結構,因此按值傳遞。
在.NET中,有兩類類型, 引用類型和值類型 。
結構是值類型 ,類是引用類型 。
通常的不同之處在於, 引用類型駐留在堆上,而值類型駐留在內聯中,也就是說,無論它在何處定義了變量或字段。
包含值類型的變量包含整個值類型值。 對於結構,這意味着變量包含整個結構及其所有字段。
包含引用類型的變量包含指針或對實際值所在的內存中其他位置的引用 。
首先有一個好處:
在內部, 引用類型被實現為指針,並且知道引用類型並知道變量分配如何工作,還有其他行為模式:
聲明變量或字段時,以下是兩種類型的區別:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.