C#变量
大家好,我是denylau,今天很郁闷了,本来整理了好多关于变量的咨询眼看就要写完了,电脑出现异常,所有的一切白做了,这个我时候我就纳闷了,为什么blog在发表文章前的写的这么多的东西我无法暂存起来呢?一旦浏览器出现问题,所有的就是徒劳的额,希望以后的blog能够增加一个暂存功能,我写一行点个暂存,及时关闭浏览器再次打开的时候也是可以直接查看的。多好,草稿相对比较麻烦。
好了,下面还是重新的整理下变量吧!
1.变量的概念
变量本身被用来存储特定类型的数据,可以根据需要随时改变变量中所存储的数据值。变量具有名称,类型和值。
当我们了解了变量的概念之后,大家很想知道变量究竟有那几种呢?那么在C#中根据变量的定义可以分为两种:值类型,引用类型。那么他们直接存在什么样的差异呢?值类型存储的是变量本身的数据,而引用类型则存储实际数据的引用。下面详细介绍值类型和引用类型的特性。
值类型:
·值类型变量都存储在堆栈中。
·访问值类型变量时,一般都是直接访问其实例。
·每个值类型变量都有自己的数据副本,因此对一个值类型的变量的操作不会影响其他的变量。
·复制值类型变量时,复制的是变量的值,而不是变量的地址。
·值类型变量不能为null,必须具有一个确定的值。
引用类型:
·必须在托管堆中为引用类型变量分配内存。
·必须使用new关键字来创建引用类型变量。
·在托管堆中分配的每个对象都有与之相关联的附加成员,这些成员必须被初始化。
·引用类型变量是由垃圾回收机制来管理的。
·多个引用类型变量都可以引用同一个对象,这种情形下,对一个变量的操作会影响另一个变量所引用的同一对象。
·引用类型被赋值之前的值都是null。
那么我们在编写程序的过程中经常还会使用到得一个特殊的值类型是枚举类型,那么它有什么特点呢?
枚举类型:枚举类型用于声明一组具有相同性质的变量,使用枚举类型可以增加程序的可读性和可维护性。同时,枚举类型可以避免类型错误,下面呢我通过一个实例给大家介绍一下枚举类型:
using System;
using System.Collections.Generic;
using System.Text;
namespace Test03
{
class Program
{
enum MyDate
{
Sun = 0,
Mon = 1,
Tue = 2,
Wed = 3,
Thi = 4,
Fri = 5,
Sat = 6
}
static void Main(string[] args)
{
int k = (int)DateTime.Now.DayOfWeek;
switch (k)
{
case (int)MyDate.Sun: Console.WriteLine("今天是星期日"); break;
case (int)MyDate.Mon: Console.WriteLine("今天是星期一"); break;
case (int)MyDate.Tue: Console.WriteLine("今天是星期二"); break;
case (int)MyDate.Wed: Console.WriteLine("今天是星期三"); break;
case (int)MyDate.Thi: Console.WriteLine("今天是星期四"); break;
case (int)MyDate.Fri: Console.WriteLine("今天是星期五"); break;
case (int)MyDate.Sat: Console.WriteLine("今天是星期六"); break;
}
Console.ReadLine();
}
}
}
程序首先通过enum关键字建立一个枚举,然后声明一个int类型的变量K,用于获取当前表示的日期是星期几,最后调用switch语句,输出星期。
既然在C#中数据类型不止一种,或者说有很多种,那么这些数据类型之间能否进行转换呢?如果能,它们又有哪些转换的方式呢?
类型转换的两种方式:隐式转换,显式转换
隐身转换:就是不需要声明就能进行的转换,通俗点就是将较小范围内的数据类型转换为较大的范围的数据类型的操作。
显式转换:也就是我们常说的强制转换,需要在代码中写明要转换的数据类型。通俗说法就是从范围较大的转换为较小的数据类型。
那么在值类型和引用类型的转换呢?
这就不得不说到装箱和拆箱了。
装箱:讲值类型转换为引用类型的过程叫做装箱,是一种特殊的隐式转换。
拆箱:讲引用类型显示转换为值类型,是显式转换的一种特殊情形。