概念:
1.值型別:資料儲存在記憶體的堆疊中,從堆疊中可以快速地訪問這些資料,因此,值型別表示實際的資料。
2.引用型別:表示指向儲存在記憶體堆中的資料的指標或引用(包括類、介面、陣列和字串)。
區別:基本區別在於它們在記憶體中的儲存方式。值型別只將值存放在記憶體中,這些值型別都儲存在堆疊中。原始資料型別(如bool和int)都屬於此型別。而引用型別的記憶體單元中只存放記憶體堆中物件的位址,而物件本身放在記憶體堆中。如果引用的值型別的值是null,則表示未引用任何物件。
下面我用兩個例子說明它們的區別,這兩個例子是我在vs2005開放環境中編譯通過的:
新建乙個控制台應用程式:取名test1
class program
",val);
test(val);
console.writeline("該變數此時的值為:",val);
console.read();
}static void test(int getval)
int temp = 10;
getval = temp * 20; }}
}命令提示符視窗得出的結果:
為了說明問題,再新建乙個控制台應用程式:取名test2
namespace test2
class datatypetest
",objtest.val);
test(objtest);
console.writeline("變數的值為:",objtest.val);
console.read();
}static void test(datatypetest datatest)//這裡傳遞的是物件位址}}
命令提示符視窗得出的結果:
總結:特點
值型別
引用型別
變數存放的內容
實際值引用
記憶體單元
內聯(堆疊)
堆預設值0空
傳遞給方法的引數
複製值複製引用
C 中值型別和引用型別的區別
概念 1.值型別 資料儲存在記憶體的堆疊中,從堆疊中可以快速地訪問這些資料,因此,值型別表示實際的資料。2.引用型別 表示指向儲存在記憶體堆中的資料的指標或引用 包括類 介面 陣列和字串 區別 基本區別在於它們在記憶體中的儲存方式。值型別只將值存放在記憶體中,這些值型別都儲存在堆疊中。原始資料型別 ...
C 中值型別和引用型別的區別
概念 1.值型別 資料儲存在記憶體的堆疊中,從堆疊中可以快速地訪問這些資料,因此,值型別表示實際的資料。2.引用型別 表示指向儲存在記憶體堆中的資料的指標或引用 包括類 介面 陣列和字串 區別 基本區別在於它們在記憶體中的儲存方式。值型別只將值存放在記憶體中,這些值型別都儲存在堆疊中。原始資料型別 ...
C 中值型別和引用型別
概念 1.值型別 資料儲存在記憶體的堆疊中,從堆疊中可以快速地訪問這些資料,因此,值型別表示實際的資料。2.引用型別 表示指向儲存在記憶體堆中的資料的指標或引用 包括類 介面 陣列和字串 c 中定義的值型別包括原型別 sbyte byte short ushort int uint long ulo...