日期:2014-05-17  浏览次数:20937 次

C#与Visual Basic的异与同(二)——数据类型

数据类型

       C#的数据类型分为三大类,分别为值类型、引用类型和类型转换。


       值类型包括三种,分别为简单类型、结构类型和枚举类型。其中简单类型又包括整数型、浮点型、小数型和布尔型。C#中的简单类型和VB中的数值型是有些地方是相似的,这个可以将二者比较起来进行掌握。VB中的数值型包括整数型(整型和长整型)、浮点型(单精度浮点型、双精度浮点型)、货币型和字节型。


       可是有一点需要明确的是,浮点型数据就是用来表示带有小数的实数的,可C#中为什么又单列出小数型这一数据类型呢?原来C#中的小数类型是高精度的数据类型,占用16个字节,主要是为了满足需要高精度的财务和金荣计算机领域,小数类型数据的范围远远小于浮点型,但它比浮点型的精确度要高得多。二者区分的标准为小数类型数据后面有m或者M,否则系统就会把其当做标准的浮点型去处理了。


       但是我们在实际操作中,往往会遇到这样的情况,那就是有些数据信息是由若干数据类型的数据组合起来的,我们不能单单通过定义一个数组来涵盖处理所有的信息,这时就要用到结构类型了。结构类型是把不同类型数据信息组合在一起形成的组合类型,其中的结构是用户自定义的数据类型。下面通过一个例子简单说明一下。

下面是一个关于结构类型的举例

#region 这是一个结构类型
            struct WorkerInformation    //定义一个工厂员工信息的结构类型
            {
                long cardNo;     //定义结构的数据成员,包括卡号;姓名;性别;家庭住址;联系方式
                string name;
                string sex;
                int age;
                string address;
                long telephone;

                void structmethod()          
                {
                        //可执行的代码
                }

            }
#endregion

例子很简单,上面也加了注释,这里就不进一步解释了。


       下面来说一下枚举,那么什么是枚举呢?用一句话来概括一下,枚举类型就是将一个变量所有的值一一列出来,而这个变量在所列的范围内取值。定义枚举的方法是使用enum关键字。下面通过一个例子来说明一下。

 enum family
            {
                grandfather,grandmother,father,mother,sister,me;
            }
这个例子就是一个很简单的枚举,通过定义一个family这个变量,把这个变量里的所有值一一列出来。


       下面说一下引用类型,它是C#中和值类型并列的类型,它与值类型的区别在于他们在内存中的存储方式。值类型存储在栈中,引用类型所存储的实际数据是当前引用值的地址,而当前引用值这个对象本身存储在内存堆中。说起来有些拗口。换句话来说,简单数据类型存储的是自身的值,而引用类型存储的是将自身的值直接指向到某个对象的值。说到这里,又不免提一下堆和栈。


       这里需要提一下的是堆和栈的区别。栈用于存储固定长度的数据;堆是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过使用方便。在C#中基本数据类型Bool和Long都是值类型。相反,大多数复杂的C#数据类型包括我们自己声明的类都是引用类,它们分配在堆中。


       最后说一下类型转换,数据类