结构是值类型吗?数组是引用类型吗?
----------------------------------
我在看经典入门这本书,书上说,结构是值类型,我怀疑会不会是印错了,我印象中,结构与类是非常相同的呀。主要区别就是成员一个默认公有,一个默认私有呀。但是值类型与引用类型,那区别就是一天一地了。
所以想确认一下,结构真的是值类型吗?结构也可以有成员函数呀,我无法理解它可以是值类型?另外,书上说,数组是引用类型,我也是不解,如果是引用,那就是在“堆”中分配内存,可是我印象中,数组是不是应该在栈中分配内存呀。数组真的是引用类型吗?
----------------------------------
我在看经典入门这本书,书上说,结构是值类型,我怀疑会不会是印错了,我印象中,结构与类是非常相同的呀。主要区别就是成员一个默认公有,一个默认私有呀。但是值类型与引用类型,那区别就是一天一地了。
所以想确认一下,结构真的是值类型吗?结构也可以有成员函数呀,我无法理解它可以是值类型?另外,书上说,数组是引用类型,我也是不解,如果是引用,那就是在“堆”中分配内存,可是我印象中,数组是不是应该在栈中分配内存呀。数组真的是引用类型吗?
c++
class a{};
a a1;
a* a2 - new a;
这两句倒c#里
a a1 就没法表示所以用
struct a{}
a a1;
第二句用
class a{}
a a2 = new a;
数组都是Array 的基类
Array 是引用类型所以数组是引用类型
2. 值类型存取速度快,引用类型存取速度慢。
3. 值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针或引用
4. 值类型继承自System.ValueType,引用类型继承自System.Object
5. 栈的内存分配是自动释放;而堆在.NET中会有GC来释放
C#中基本数据类型是值类型,结构也是值类型。而数组、类、接口、字符串都是引用类型。
值类型:简单类型、枚举类型和结构类型
简单类型分为:除字符串外的都是简单类型。有:整型(有符号和无符号数)、浮点(float、double)、字符(char)、高精度小数(decimal)和布尔
引用类型:类(object、class)、接口(interface)、字符串(string)、数组(int[] string[])和委托(delegate)。