C# 方法參數傳遞:值類型與引用類型
C# 中,非原始類型變量以引用方式傳遞的行為已被廣泛接受。然而,在處理 System.Drawing.Image 等對象時,一些開發者可能會遇到差異。理解對像傳遞的細微之處對於避免意外結果至關重要。
默認情況下,對象並非直接傳遞給方法。而是對其相應的值進行評估,並將初始參數值作為參數傳遞。對於引用類型(非原始類型),該值表示對實際對像或 null 的引用。因此,在方法內部對對象進行的任何修改都對調用者可見。
但是,需要注意的是,將參數的值更改為指向另一個不同對象,在使用按值傳遞(默認行為)時,不會反映在調用者的作用域中。
要實現按引用傳遞語義,必須使用 out
或 ref
關鍵字,而不管參數類型是什麼。通過指定這些關鍵字,參數本身將按引用傳遞,確保對參數的更改對調用者可見。
以下是一個簡化的示例:
<code class="language-csharp">public void Foo(Image image) // 按值传递 { // 对参数的更改对调用者不可见。 image = Image.FromStream(...); } public void Foo(ref Image image) // 按引用传递 { // 对参数的更改对调用者可见。 image = Image.FromStream(...); }</code>
相反,在按值傳遞對象時,對引用對象內數據所做的修改將對調用者可見。
有關此主題的更全面解釋,請參閱提供的答案中鏈接的詳細文章。
以上是值與參考:C#如何將對像傳遞給方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!