C#中变量的类型

值类型

C#中值类型的变量主要包括整数类型、浮点类型、decimal和bool类型等。值类型的变量都在堆栈中进行分配,因此效率很高。所以使用值类型的主要目的是为了提高性能。

  1. 整数类型
    整数类型代表的就是一个整数。当用户声明一个int类型时,系统就会分配内存来存储值。
  2. 浮点类型
    浮点类型的变量主要是对带有小数点的数据进行处理。
  3. decimal类型
    decimal关键字指示128位数据类型。与其他浮点型相比,decimal类型具有更高的精度和更小的范围,这使它适合于财务和货币计算。
  4. bool类型
    众所周知,计算机实际上就是用二进制来表示各种数据的,即不管何种数据,在计算机内部都是采用二进制方式处理和存储的。布尔类型表示的逻辑变量只有两种取值:“真”和“假”。在C#中,分别采用true和false两个值来表示。
  5. 字符类型
    字符包括数字字符、英文字母、表达符号等,C#提供的字符类型按照国际上公认的标准,采用Unicode字符集。一个Unicode的标准字符长度为16位。

引用类型

C#的另一大数据类型是引用类型。“引用”这个词在这里的含义是,该类型的变量不直接存储包含的值,而是指向它所要存储的值。也就是说,引用类型存储实际数据的引用值的地址。

using System;
namespace Project9
{
    class Program
    {
        class A                         //创建一个类A
        {
            public int num = 0;       //声明一个公有int类型的变量num
        }
        static void Main()
        {
            int a = 0;              //定义int类型的变量a,并初始化为0
            int b = a;               //定义int类型的变量b,将a赋给b
            b = 100;                 //为变量b重新赋值为100
            Console.WriteLine("a={0}  b={1}", a, b);
            A n1 = new A();  //使用new关键字创建引用对象
            A n2 = n1;       //是n1等于n2
            n2.num = 200;    //为变量n2的num重新赋值
            Console.WriteLine("n1={0}  n2={1}", n1.num, n2.num);
            Console.ReadKey();
        }
    }
}

【程序分析】本例演示了引用类型变量的输出。由于引用类型的变量存储是对其数据(对象)的引用,而值类型的变量直接包含其数据,对于引用类型,两种变量可引用同一对象,因此,对一个变量执行的操作会影响另一个变量所引用的对象;对于值类型,每个变量都具有其自己的数据副本,对一个变量执行的操作不会影响另一个变量。所以,变量a的值没有受到变量b的影响,最后输出a与b的值不相同。

a=0  b=100
n1=200  n2=200

值类型与引用类型的区别

C#里面把数据类型分为两大类,分别为值类型和引用类型,值类型包括基本数据类型(int、char、double等),结构和枚举。引用类型包括接口、数组、类等。下面列出了这两大类的区别呢。

  1. 值类型
    值类型就是一个包含实际数据的量。即当定义一个值类型的变量时,C#会根据它所声明的类型,以栈方式分配一块大小相适应的存储区域给这个变量,随后对这个变量的读或写操作就直接在这块内存区域进行。
  2. 引用类型
    一个引用类型的变量不存储它们所代表的实际数据,而是存储实际数据的引用。引用类型分两步创建,首先在栈上创建一个引用变量,然后在堆上创建对象本身,再把这个内存的句柄(也是内存的首地址)赋给引用变量。

枚举类型

枚举类型也称为枚举,用于定义一组在逻辑上密不可分的整数值提供便于记忆的符号。枚举类型是使用enum关键字声明。

using System;
namespace Project10
{
    class Program
    {
        enum Days { Sun, Mon, tue, Wed, thu, Fri, Sat };   //使用enum创建枚举
        static void Main(string[] args)
        {
            int start = Convert.ToInt32(Days.Mon);   //将枚举值Mon赋给变量start
            int end = (int)Days.Fri;   //将枚举值Fri赋给变量end
            Console.WriteLine("Monday: {0}", start);
            Console.WriteLine("Friday: {0}", end);
            Console.ReadKey();
        }
    }
}

【程序分析】本例演示了枚举类型变量的输出。在代码中首先创建一个Days枚举,该枚举有7个值,分别表示周一到周日;然后通过逗号运算符访问Days枚举的Mon和Fri,并将这两个枚举值分别赋给变量start和end;最后输出变量start和end。

Monday: 1
Friday: 5

变量的作用域

变量的作用域指的是能够使用该变量的区域。作用域既作用于方法,也作用于变量。一个标识符的作用域是从声明该标识符的那个位置开始的,不管是变量还是方法都应如此。在C#中通常用“{”和“}”来界定变量的作用范围。
变量的作用域有着严格的要求,在声明变量时需要注意两点,首先变量名不要重复,其次声明变量的位置很重要。例如:

static void Main(string[] args)
{
    for (int i = 0; i < 5; i++)
    {
         int s = 100;
         Console.WriteLine(s);
    }
}

这是一个for循环语句,该语句的作用是循环输出5次变量s的值,而变量s在for循环外则并不能访问到。因为变量s在for循环内部声明,所以只能在for循环内部访问。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值