值类型与引用类型有什么不同?请举例说明?并分别列举几种相应的数据类型
值类型(Value Type),值类型实例通常分配在线程的堆栈(stack)上,并且不包含任何指向实例数据的指针,因为变量本身就包含了其实例数据。其在MSDN的定义为值类型直接包含它们的数据,值类型的实例要么在堆栈上,要么内联在结构中。我们由上图可知,值类型主要包括简单类型、结构体类型和枚举类型等。通常声明为以下类型:int、char、float、long、bool、double、struct、enum、short、byte、decimal、sbyte、uint、ulong、ushort等时,该变量即为值类型。
引用类型(Reference Type),引用类型实例分配在托管堆(managed heap)上,变量保存了实例数据的内存引用。其在MSDN中的定义为引用类型存储对值的内存地址的引用,位于堆上。我们由上图可知,引用类型可以是自描述类型、指针类型或接口类型。而自描述类型进一步细分成数组和类类型。类类型是则可以是用户定义的类、装箱的值类型和委托。通常声明为以下类型:class、interface、delegate、object、string以及其他的自定义引用类型时,该变量即为引用类型。
你再看看这
http://msdn.microsoft.com/zh-cn/flash/ms228360.aspx
基本数据类型做参数时函数会创建一个相同的临时变量引用类型时函数创建的临时变量只是该对象指针的概念
大多数编程语言提供内置的数据类型(比如整数和浮点数),这些数据类型会在作为参数传递时被复制(即,它们通过值来传递)。在 .NET Framework 中,这些称为值类型。您可以创建值类型的实例,将它们作为参数传递,将它们存储为局部变量,或将它们存储在另一值类型或对象的字段中。值类型没有与存储类的实例相关的系统开销,并且它们不需要构造函数。值类型可以有字段、属性和事件。它们也有静态和非静态方法。当它们被装箱时,会从 System.ValueType 继承虚方法,并可实现零个或更多接口。值类型是密封的,这意味着不能从它们派生出其他类型。但是,可以直接对值类型定义虚方法,并且既可对该类型的已装箱形式,也可对未装箱形式调用这些方法。尽管不能从一种值类型派生出另一种类型,但是当所用语言处理虚方法比处理非虚方法或静态方法更方便时,可以对值类型定义虚方法。 引用类型的变量又称为对象,可存储对实际数据的引用。javascript中基本类型和引用类型的区别分析
引用类型和传统的面向对象程序设计中的类相似,但实现不同。Object是一个基础类型,其他所有类型都是从Object继承基本的行为;Array类型是一组值的有序列表,同事还提供了操作和转换这些值的功能;Date类型提供有关日期和时间信息,包括当前日期和时间已经相关的计算功能;RegExp类型是支持正则表达式的。functi...
值类型和引用类型
(1)值类型:数据存储在内存的堆栈中,从堆栈中可以快速地访问这些数据,因此,值类型表示实际的数据。(2)引用类型:对象、数组、函数。1、值类型:包括:sbyte、short、int、long、float、double、decimal(以上值类型有符号)byte、ushort、uint、ulong(以上值类型无符号)bool、char2、引用类型:包括:...
C#值类型和引用类型的区别
1、分配不同。值类型分配在线程堆栈上(管理由操作系统负责),引用类型分配在托管堆上(管理由垃圾回收器GC负责)。管理指内存空间的分配和释放:变量本身是存储在堆栈上的(无论是值类型变量还是引用类型变量);但是对于实际数据:引用类型存在托管堆上,值类型存在堆栈。2、继承不同。值类型继承自value...
java中的引用数据类型是怎样的?
java中有两种数据类型:基本类型和引用类型。\\x0d\\x0a基本类型有8个:\\x0d\\x0a 整数类型 byte、short、int、long\\x0d\\x0a 浮点数类型 float、double\\x0d\\x0a 字符型 char\\x0d\\x0a 布尔类型 boolean\\x0d\\x0a引用类型包括三种:\\x0d\\x0a 类 Class\\x0d\\x0a ...
引用分哪几个类型,怎样使用引用的格式?
明引,举例:孔子曰:「三人行,必有我师。」是故弟子不必如师,师不必贤於弟子。暗引,举例:失败乃成功之母,你千万不要气馁。正引,就是引用者对所引用的语句持肯定的态度。反引,是引用者对所引用的语句加以评判,持否定的态度。借引,就是原文的本意与所要表达的意义既不相同相似,也不相反...
值类型和引用类型的区别和联系
(1)值类型:数据存储在内存的堆栈中,从堆栈中可以快速地访问这些数据,因此,值类型表示实际的数据。(2)引用类型:对象、数组、函数。1、值类型:包括:sbyte、short、int、long、float、double、decimal(以上值类型有符号)byte、ushort、uint、ulong(以上值类型无符号)bool、char2、引用类型:包括:...
值类型与引用类型的区别是什么呢?
1)值类型存储在内存栈中,引用类型数据存储在内存堆中,而内存单元中存放的是堆中存放的地址。2)值类型存取快,引用类型存取慢。3)值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针和引用。4)栈的内存是自动释放的,堆内存是.NET中会由GC来自动释放。5)值类型继承自System.ValueType...
c#引用类型的理解
为了更好地说明两种类型之间的区别,借用如下的表格来说明。值类型引用类型内存分配地点分配在栈中分配在堆中效率效率高,不需要地址转换效率低,需要进行地址转换内存回收使用完后,立即回收使用完后,不是立即回收,等待GC回收赋值操作进行复制,创建一个同值新对象只是对原有对象的引用函数参数与返回值是...
js两种引用数据类型?
3、JS数据类型有7种,分别是:3种基本类型(数字,字符串,布尔),2种引用数据类型(对象,数组),以及2种特殊数据类型(undefined,null)。4、JS数据类型:JS的基本类型和引用类型有哪些呢?基本类型(单类型):除Object。String、Number、boolean、null、undefined。引用类型:object。里面包含的...
“值类型”和“引用类型”的区别是什么?
(1)值类型:数据存储在内存的堆栈中,从堆栈中可以快速地访问这些数据,因此,值类型表示实际的数据。(2)引用类型:对象、数组、函数。1、值类型:包括:sbyte、short、int、long、float、double、decimal(以上值类型有符号)byte、ushort、uint、ulong(以上值类型无符号)bool、char2、引用类型:包括:...
龚青骨通: 1, 值类型保存的是具体的值.例如 int a = 1; int b = a; b++; 这时b为2,a仍然是1,2, 引用类型保存的是值的地址.例如有个类型是 User User u1 = new User(){ Name = "张三" }; User u2 = u1; u2.Name = "李四"; 这时 u2 和 u1 的名字都为...
宜宾县13258533908: 值类型与引用类型有什么不同?请举例说明?并分别列举几种相应的数据类型 - ?
龚青骨通: 大多数编程语言提供内置的数据类型(比如整数和浮点数),这些数据类型会在作为参数传递时被复制(即,它们通过值来传递).在 .NET Framework 中,这些称为值类型.您可以创建值类型的实例,将它们作为参数传递,将它们存储为局部...
宜宾县13258533908: 什么是引用类型和值类型,有什么区别 - ?
龚青骨通: 值类型表示复制一个当前变量传给方法,当你在这个方法中改变这个变量的值时,最初生命的变量的值不会变.引用类型表示你操作的数据是同一个,也就是说当你传一个参数给另一个方法时,你在另一个方法中改变这个变量的值,那么调用这个方法是传入的变量的值也将改变.通俗说法: 值类型就是现金,要用直接用;引用类型是存折,要用还得先去银行取现.
宜宾县13258533908: 值类型和引用类型有什么区别? - ?
龚青骨通: 值类型: 单元直接存放“有效值” 如: int a=3; 则a内存单元就放的是3 引用类型: 单元放的是另外一个对象的引用(地址) 如: Form form1=new Form(); 就是说,在内存中开辟了一个对象new Form(),form1内存单元存放的是那个对象的地址,并非对象本身
宜宾县13258533908: 1. 值类型与引用类型的区别是什么? - ?
龚青骨通: 你可以这样理解:值类型保存的是具体的值 引用类型保存的是值的地址 例如 int a = 1; int b = a; b++; 这时b为2,a仍然是1 再看引用类型,例如有个类型是 User User u1 = new User(){ Name = "张三" }; User u2 = u1; u2.Name = "李四"; 这时 u2 和 u1 的名字都为李四,因为 u2=u1的时候,u1和u2将指向同一个内存中的地址.改变u2的等于改变了u1,
宜宾县13258533908: 值类型 和 引用类型的 区别 - ?
龚青骨通: 引用类型一般应用在函数方面.普通函数 void func(int m){...} 使用时 int i = 1; func(i)//将复制一份变量的副本 引用 void func(const int &m){...} func(i) 这时func的形参是实参i的引用,相当于m是i的另一个名字.将不会复制副本.
宜宾县13258533908: 值类型与引用类型之间的区别 - ?
龚青骨通: 他们两在内存中存储的方式不同,直类型以栈的方式存储的,引用类型以堆的方式;前者是真实的存储空间,后者只是存储地址的引用!
宜宾县13258533908: 简述值类型与引用类型的不同之处 - ?
龚青骨通: 下边的例子就明白了: int val = 100;object obj = val;Console.WriteLine (“对象的值 = ", obj);这是一个装箱的过程,是将值类型转换为引用类型的过程.int val = 100;object obj = val;int num = (int) obj;Console.WriteLine ("num: ", num);这是一个拆箱的过程,是将值类型转换为引用类型,再由引用类型转换为值类型的过程. 注:被装过箱的对象才能被拆箱
宜宾县13258533908: 值类型和引用类型的区别,用最简单的C#案例说明 - ?
龚青骨通: 值类型就是有具体的取值范围,而引用类型则没有相对于取值范围,关联到了内存,指针问题
宜宾县13258533908: 值类型与引用类型的区别 - ?
龚青骨通: 先帮助你直观地理解:值类型就是现金,要用直接用;引用类型是存折,要用还得先去银行取现. 声明一个值类型变量,编译器会在栈上分配一个空间,这个空间对应着该值类型变量,空间里存储的就是该变量的值.引用类型的实例分配在堆上,新建一个引用类型实例,得到的变量值对应的是该实例的内存分配地址,这就像您的银行账号一样.