C 中類與結構的區別例項分析

2022-09-26 08:30:14 字數 1568 閱讀 2216

一、基本概念:

類:引用型別,儲存在堆中,棧中儲存引用位址,在方法的傳輸中只是傳輸位址的引用,修改指向的物件會影響原有物件的值,傳輸中消耗記憶體小。

結構:值型別,儲存在堆疊中,傳輸過程中傳輸整個物件的副本,修改指向物件的值不會影響原有的物件,傳輸中消耗記憶體大。

二、例項**如下:

class program

y=", tc1.x, tc1.y);

tc1.x = 20;

tc1.y = "20";

console.writeline("/*修改類物件 tc1 值為20*/");

console.writeline("tc1 x= y=", tc1.x, tc1.y);

bwkvya

/*執行類傳遞 並修改傳遞後的值*/

console.writeline("/*建立類物件 tc2 指向 tc1,並修改 值為10*/");

testclass tc2 = tc1;

tc2.x = 10;

tc2.y = "10";

console.writeline("/*類傳輸過程中傳遞的是儲存在堆疊中的引用位址 傳輸中消耗記憶體小 並沒有傳送儲存在堆中的值 所以原有物件受到影響*/");

console.writeline("tc1 x= y=", tc1.x, tc1.y);

console.writeline("tc2 x= y=", tc2.x, tc2.y);

/*宣告結構物件*/

cobwkvyansole.writeline("/*宣告結構物件ts1 並賦值10*/");

teststruct ts1 = new teststruct();

ts1.x = 10;

ts1.y = "10";

console.writeline("ts1 x= y=", ts1.x, ts1.y);

console.writeline("/*修改結構物件 ts1 值為20*/");

ts1.x = 20;

ts1.y = "20";

console.writeline("ts1 x= y=", ts1.x, ts1.y);

/*執行結構傳遞 並修改傳遞後的值*/

console.writeline("/*建立結構物件 ts2 指向 ts1,並修改 程式設計客棧值為10*/");

teststbwkvyaruct ts2 = ts1;

ts2.x = 10;

ts2.y = "10";

console.writeline("/*結構傳輸過程中 會傳遞整個物件的副本 傳輸中消耗記憶體大 所以修改對原有物件不受影響*/");

console.writeline("ts1 x= y=", ts1.x, ts1.y);

console.writeline("ts2 x= y=", ts2.x, ts2.y);

console.readline();

}}public class testclass

public struct teststruct

**執行結果如下圖所示:

本文標題: c#中類與結構的區別例項分析

本文位址:

c 中結構與類的區別

類與結構的差別 如何選擇結構還是類 一 類與結構的示例比較 結構示例 public struct person 類示例 public class testtime 呼叫過程 public class test 從上面的例子中我們可以看到,類的宣告和結構的宣告非常類似,只是限定符後面是 struct ...

c 中結構與類的區別

類與結構的差別 如何選擇結構還是類 一 類與結構的示例比較 結構示例 public struct person 類示例 public class testtime 呼叫過程 public class test 從上面的例子中我們可以看到,類的宣告和結構的宣告非常類似,只是限定符後面是 struct ...

C 中結構與類的區別

c 中結構與類的區別目錄 類與結構的例項比較 類與結構的差別 如何選擇結構還是類 一 類與結構的示例比較 結構示例 public struct person 類示例 public class testtime 呼叫過程 public class test 從上面的例子中我們可以看到,類的宣告和結構的...