国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

C#高級編程閱讀筆記一(關于值類型和引用類型)

2024-07-21 02:18:24
字體:
來源:轉載
供稿:網友
數據在內存中的存儲位置,取決于它的數據類型,在c#中,分為值類型和引用類型,值類型的數據存儲在內存中的堆棧中,每個變量或程序都有自己的堆棧,不可以共用一個堆棧地址。當數據一個值類型的變量傳遞到另一個相同類型的變量時,會在堆棧中分配兩個不同的地址。

而引用類型的數據存儲在內存中的堆中,可以不同的變量或程序共同使用同一個位置的數據。當數據從一個引用類型的變量傳遞到另一個相同類型的變量時,只是把這個變量的引用地址傳遞給新的變量,同時引用當前堆中存儲的數據。

可以通過實例得到詳細結論:
using system;
// 定義一個矩形類,類屬于引用類型
class refrectangle
{
public int width;
public int height;
}
// 定義一個矩形結構,屬于值類型
struct valrectangle
{
public int width;
public int height;
}

class refvalrectangle
{
public static void main()
{
// 創建一個矩形對象,并將值傳遞給另一個新對象.
refrectangle ref1 = new refrectangle(); ;
ref1.width = 3;
ref1.height = 4;
refrectangle ref3 = ref1;
console.writeline("dimensions of ref1 are : " + ref3.width.tostring() + "..." + ref3.height.tostring());
console.writeline("change dimensions of ref1");
ref1.width = 10;
ref1.height = 50;
bool btransfer = ref3.equals(ref1);
console.writeline("dimensions of ref1 now are : " + ref3.width.tostring() + "....." + ref3.height.tostring());
console.writeline(btransfer.tostring());
console.readline();
// 創建一個矩形結構,將值傳遞給一個新的矩形結構
valrectangle val1 = new valrectangle();
val1.width = 3;
val1.height = 4;
valrectangle val3 = val1;
console.writeline("dimensions of val1 are : " + val3.width.tostring() + "..." + val3.height.tostring());
console.writeline("change dimensions of val1");
val1.width = 10;
val1.height = 50;
bool bpass = val3.equals(val1);
console.writeline("dimensions of val1 now are : " + val3.width.tostring() + "....." + val3.height.tostring());
console.writeline(bpass.tostring());
console.readline();
}
}

可以看到,當值類型的變量傳遞后,改變第一個變量,不會影響第二個變量的值,這是因為,當變量傳遞時,是在堆棧中又分配了一個地址給新的變量,所以這個兩個變量在傳遞發生后,不再有關系。
而引用類型的變量傳遞后,改變第一個,第二個變量隨之改變,是因為兩個變量同時引用堆中的一個地址的內容,當一個變量改變,對應與內存中的堆也隨之改變,而另外的一個變量也隨之改變。












發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 望城县| 年辖:市辖区| 宝鸡市| 佳木斯市| 尼玛县| 繁峙县| 香港| 涟水县| 如东县| 洮南市| 信丰县| 石台县| 陵川县| 丹东市| 怀安县| 荃湾区| 荣昌县| 水城县| 达拉特旗| 鄯善县| 哈巴河县| 广德县| 五指山市| 赤水市| 平定县| 台安县| 精河县| 闽清县| 儋州市| 射阳县| 东至县| 鱼台县| 新田县| 武鸣县| 绥宁县| 修水县| 特克斯县| 景德镇市| 易门县| 策勒县| 政和县|