C#中数据类型
来源:互联网 发布:阿国网络随笔博客 编辑:程序博客网 时间:2024/05/17 18:19
C#中的变量类型根据其定义可以分为两种:一种是值类型,另一种是引用类型。这两种变量类型的区别在于数据的存储方式,值类型的变量本身直接储存数据,而引用类型则储存实际数据的引用,程序通过此引用找到找到真正的数据。
一,值类型
值类型直接储存其数据值,主要包括整型、浮点型以及布尔型等。由于值类型变量储存在栈中, 因此效率很高。
值类型有以下几个比较重要的特点:
(1),对于一个值类型的操作不会影响其他的变量。
(2),复制值变量时,复制的是变量的值,而不是变量的地址。
(3),值类型变量的值不能为NULL,必须具有一个确定的值。
对于C#中的整型,浮点型变量同C和C++。
二,引用类型
引用类型变量是构建C#应用程序的主要对象类型数据。在应用程序执行过程中,预先定义的对象类型以new创建对象实例,并且储存在堆里。堆是一种由系统弹性分配的内存空间,没有特定的大小以及存活时间,因此可以被弹性地运用于对象的访问。
引用类型具有以下几个比较重要的特征:
(1),必须在托管堆中为引用类型变量分配内存。
(2),使用new关键字来创建应用类型变量。
(3),多个引用类型变量可以引用同一对象,这种情况下,对一个变量的操作会影响另一个变量所引用的同一对象。
(4),引用类型被赋值前的值都是NULL型
三, 值类型和引用类型的区别(针对值类型的特点一和引用类型的特点三)
主要以两个实例来说明区别。
事例一,上代码:
namespace _3._11{ class Program { class C //创建一个公共类型的类C { public int Value = 0; //声明一个公共int 类型的变量 Value } static void Main(string[] args) { int v1 = 0; //这是一个值类型变量
int v2 = v1; //将v1的值赋给v2 v2 = 927; C r1 = new C(); //使用new关键字创建引用对象 C r2 = r1; //引用类型变量,相当于r1 和 r2 是同一个地址 , 当其中一个值改变时,另一个只也随之改变 r2.Value = 112; Console.WriteLine("Value :{0},{1}", v1, v2); Console.WriteLine("Refs:{0} , {1}", r1.Value, r2.Value); Console.ReadLine(); } }}
我们可以看到v2的值改变了,但是v1的值并没有发生变化;而r2的值发生变化后,r1的值也随之发生变化。这就是值类型变量和引用类型变量的区别。
我们可以通过事例二更清楚看到这种区别。来人, 给客官上代码~
事例二:
namespace 演示{ class Program { static void Main(string[] args) { ReferenceAndValue.Demonstration(); Console.ReadLine(); } } public class stamp { public string Name { get; set; } public int Age { get; set;} } public static class ReferenceAndValue { public static void Demonstration() { stamp Stamp_1 = new stamp { Name = "Premiere", Age = 25 }; stamp Stamp_2 = new stamp { Name = "Again", Age = 17 }; int age = Stamp_1.Age; Stamp_1.Age = 22; stamp guru = Stamp_2; Stamp_2.Name = "Again Amend"; Console.WriteLine("Stamp_1's name : {0}", Stamp_1.Age); Console.WriteLine("age's value : {0}", age); Console.WriteLine("Stamp_2's name:{0}", Stamp_2.Name); Console.WriteLine("guru's name:{0} ", guru.Name); } }}
来,我们看一下结果就清楚了。
- C#中数据类型学习
- C#中数据类型转换
- C#中数据类型转换
- C#中数据类型分类
- C#中数据类型
- C#中数据类型
- C#中数据类型的分类
- 浅谈C#中数据类型转换
- 浅谈C#中数据类型转换
- C#中什么是元数据类型
- C#中数据类型的转换
- C#中数据类型的托管
- C#中数据类型的区别
- C#中数据类型的分类
- SQL SERVER数据类型与C#中数据类型的对应关系
- 数据库中与C#中的数据类型对照
- C#中常用的数据类型命名规则
- 数据库中与C#中的数据类型对照
- ajax传递多个参数的两种方法和label标签中获取值
- 字符串函数模拟实现(strcpy,strcat,strstr,strchr,strcmp,memcpy,memmove)
- POJ 3083
- 汇编第九节-转移指令的原理
- TOAD与Oracle DB 12c
- C#中数据类型
- OSG3.4.0+QT5.8.0+VS2013+WIN10 64BIT
- 生成器&迭代器
- MyBatis起步
- Android——systrace使用分析
- HDU 2544 最短路(多种解法)
- Java VisualVM 安装 plugins Visual GC
- Kafka运行机制与各组件详解
- 327. Count of Range Sum