首頁 > 後端開發 > C++ > C#中的參考與價值類型:有什麼區別?

C#中的參考與價值類型:有什麼區別?

Susan Sarandon
發布: 2025-02-02 10:01:09
原創
850 人瀏覽過

Reference vs. Value Types in C#: What's the Difference?

深入理解 C# 中的引用類型和值類型

C# 編程中,理解引用類型和值類型的區別至關重要。雖然兩者都存儲數據,但它們的行為和用法卻大相徑庭。

引用類型

C# 中的引用類型是非基本類型,例如接口、委託,甚至自定義類。它們持有對類型實例的引用,而不是實際的值本身。這意味著兩個相同引用類型的變量可以指向同一個底層對象。

值類型

另一方面,值類型,例如整數、布爾值和浮點數,直接存儲它們的值。當值類型變量賦值給另一個變量時,會創建一個完整的副本。對一個變量的更改不會影響另一個變量。

主要區別

下表總結了引用類型和值類型的主要區別:

特性 引用类型 值类型
内存地址 实际数据
复制行为 仅复制引用 复制整个值
赋值 分配不同的地址 分配相同的值
标识 对象可以共享标识 对象具有唯一标识
空值 可以为空 不能为空(可空类型除外)

實際示例

考慮以下代碼:

<code class="language-csharp">int number1 = 5;
int number2 = number1;

// 修改 number1
number1++;

// number2 保持不变
Console.WriteLine(number2); // 输出:5</code>
登入後複製

在此示例中,number1 是值類型,因此其值的副本被賦值給 number2。修改 number1 不會影響 number2,因為它們是具有各自值的兩個獨立變量。

現在,讓我們來看一個引用類型的示例:

<code class="language-csharp">Person person1 = new Person();
person1.Name = "John";
Person person2 = person1;

// 修改 person1
person1.Name = "Mary";

// person2 反映了更改
Console.WriteLine(person2.Name); // 输出:Mary</code>
登入後複製

在這種情況下,Person 是引用類型,因此 person1 和 person2 指向同一個對象。修改 person1 會更改底層對象,這會反映在 person1 和 person2 中。

以上是C#中的參考與價值類型:有什麼區別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板