观点:
1.值范例:数据存储在内存的客栈中,从客栈中能够疾速地接见这些数据,因而,值范例示意现实的数据。
2.援用范例:示意指向存储在内存堆中的数据的指针或援用(包含类、接口、数组和字符串)。
C#中定义的值范例包含原范例(Sbyte、Byte、Short、Ushort、Int、Uint、Long、Ulong、Char、Float、Double、Bool、Decimal)、罗列(enum)、构造(struct)
援用范例包含:类、数组、接口、托付、字符串等。
区分:
基础区分在于它们在内存中的存储体式格局。值范例只将值寄存在内存中,这些值范例都存储在客栈中。原始数据范例(如bool和int)都属于此范例。而援用范例的内存单位中只寄存内存堆中对象的地点,而对象自身放在内存堆中。假如援用的值范例的值是null,则示意未援用任何对象。
堆和客栈区分:
堆和客栈是两个差别的观点,在内存中的存储位置也不雷同,
堆平常用于存储可变长度的数据,如字符串范例;
客栈则用于存储牢固长度的数据,如整型范例的数据int(每一个int变量占用四个字节)。由数据存储的位置能够得知,当把一个值变量赋给另一个值变量时,会在客栈中保留两个完全雷同的值;而把一个援用变量赋给另一个援用变量,则会在客栈中保留对同一个堆位置的两个援用,即在客栈中保留的是同一个堆的地点。在举行数据操纵时,关于值范例,因为每一个变量都有本身的值,因而对一个变量的操纵不会影响到别的变量;关于援用范例的变量,对一个变量的数据举行操纵就是对这个变量在堆中的数据举行操纵,假如两个援用范例的变量援用同一个对象,现实寄义就是它们在客栈中保留的堆的地点雷同,因而对一个变量的操纵就会影响到援用同一个对象的另一个变量。
观点:
1.值范例:数据存储在内存的客栈中,从客栈中能够疾速地接见这些数据,因而,值范例示意现实的数据。
2.援用范例:示意指向存储在内存堆中的数据的指针或援用(包含类、接口、数组和字符串)。
C#中定义的值范例包含原范例(Sbyte、Byte、Short、Ushort、Int、Uint、Long、Ulong、Char、Float、Double、Bool、Decimal)、罗列(enum)、构造(struct)
援用范例包含:类、数组、接口、托付、字符串等。
区分:
基础区分在于它们在内存中的存储体式格局。值范例只将值寄存在内存中,这些值范例都存储在客栈中。原始数据范例(如bool和int)都属于此范例。而援用范例的内存单位中只寄存内存堆中对象的地点,而对象自身放在内存堆中。假如援用的值范例的值是null,则示意未援用任何对象。
堆和客栈区分:
堆和客栈是两个差别的观点,在内存中的存储位置也不雷同,
堆平常用于存储可变长度的数据,如字符串范例;
客栈则用于存储牢固长度的数据,如整型范例的数据int(每一个int变量占用四个字节)。由数据存储的位置能够得知,当把一个值变量赋给另一个值变量时,会在客栈中保留两个完全雷同的值;而把一个援用变量赋给另一个援用变量,则会在客栈中保留对同一个堆位置的两个援用,即在客栈中保留的是同一个堆的地点。在举行数据操纵时,关于值范例,因为每一个变量都有本身的值,因而对一个变量的操纵不会影响到别的变量;关于援用范例的变量,对一个变量的数据举行操纵就是对这个变量在堆中的数据举行操纵,假如两个援用范例的变量援用同一个对象,现实寄义就是它们在客栈中保留的堆的地点雷同,因而对一个变量的操纵就会影响到援用同一个对象的另一个变量。
以上就是C#中值范例和援用范例简朴概述的细致内容,更多请关注ki4网别的相干文章!