• C#的数据类型、数据类型的转化


     一、c#有15个预定义类型,其中13个是值类型,两个是引用类型(string 和 object)这里主要说明整型、浮点型、布尔型以及引用型

    1、整型数据

    2、浮点型

    浮点型从精度有低到高有float、double、decimal。他们的命名规则如下:

    (1)、float数据类型用于较小的浮点数,因为它要求的精度较低。

        double数据类型比float数据类型大,提供的精度也大一倍(15位)。

        如果在代码中没有对某个非整数值(如12.3)硬编码,则编译器一般假定该变量是double。

        如果想指定该值为float,可以在其后加上字符F(或f),如:

             float f = 12.3F;

    (2) decimal类型专门用于进行财务计算,使用decimal类型提供的28位的方式取决于用户。

        要把数字指定为decimal类型,可以在数字的后面加上字符M或(m),如:

        decimal d=12.30M;

    3、布尔型

    布尔型只会返回两个值ture/false.

    int a=ture/false;

    4、字符型

    它的定义是 char='只能放一个字符';

    如果把字符把放在""(双引号)内,编译器会把它看作是字符串,从而产生错误。

    二、常量和变量的区别

    变量:是指在程序的运行过程中随时可以发生变化的量 常量:是指在程序在运行过程中不会发生变化的变量。

    常量的特点:1、必须在声明是赋值

    2、不能在在程序运行时,给常量赋值

    3、常量是静态的。不必须(实际上,是不允许)在常量声明中包含修饰符static

    三、不同数据类型之间是如何转换的

    1、在C#中数据类型转换分为两种:

    1)隐式[又叫自动]类型转换

    double和int之间就是(飞机场与飞机)这种关系,我们可以这样理解,double的取值范围比int要大得多所以double可以装得下int :

    int a=1234;

    double b=a; 系统会把a整型变量的值赋值给double变量b.这就是隐式[又叫自动]类型转换

    那反过来:

    double a=1234;

    int b=a; //系统编译时会报错

    2)显式[又叫强制]类型转换

    那如何进行强制转换呢?c#提供了非常简便的方法,如:

    double a=1234;

    int b=(int)a; //这样就强制把double类型,转换为int类型

    2、其它数据类型之间的转换(1、字符串转换为其它类型 2、任意类型之间的转换)

    1)、字符串转换为其它类型

    语法:

    XX.Parse(字符串); 这里的xx代表的如:double,int,bool等

    举个例子来说明一下:

    string strValue="123.45"; //这是一个字符串,时面的值是"123.45"

    现要把它转换成小数类型,就可以使用double.Parse();来进行转换

    double dValue=double.Parse(strValue);

     2)、任意类型之间的转换

    语法:

    目标数据类型 变量名=Convert.ToXX(转化前的变量名);

    如:把一个布尔类型转换为整型

    bool a = true;

    int b = Convert.ToInt16(a);

    Console.WriteLine("转换后的结果是:"+b); //转换后的结果是:1

    注意:

    c#中类型转换的有两种,()转换和convert转换
    (1)这两个方法的最大不同是它们对null值的处理方法:
    Convert.ToInt32(null)会返回0而不会产生任何异常,但int.Parse(null)则会产生异常。
    没搞清楚Convert.ToInt32和int.Parse()的细细微区别时千万别乱用,否则可能会产生无法预料的结果,举例来说:假如从url中取一个参数page的值,我们知道这个值是一个int,所以即可以用Convert.ToInt32(Request.QueryString["page"]),也可以用,int.Parse(Request.QueryString["page"]),但是如果page这个参数在url中不存在,那么前者将返回0,0可能是一个有效的值,所以你不知道url中原来根本就没有这个参数而继续进行下一下的处理,这就可能产生意想不到的效果,而用后一种办法的话没有page这个参数会抛出异常,我们可以捕获异常然后再做相应的处理,比如提示用户缺少参数,而不是把参数值当做0来处理。
    (2)还有一点区别就是
    a. Convert.ToInt32(double value)
    如果 value 为两个整数中间的数字,则返回二者中的偶数;即 3.5转换为4,4.5 转换为 4,而 5.5 转换为 6。 不过4.6可以转换为5,4.4转换为4
    b. int.Parse("4.5")
    直接报错:"输入字符串的格式不正确".
    c. int(4.6) = 4
    Int转化其他数值类型为Int时没有四舍五入,强制转换
    int.Parse是转换String为int
    Convert.ToInt32是转换继承自Object的对象为int的.
    你得到一个object对象,你想把它转换为int,用int.Parse就不可以,要用Convert.ToInt32.
    个人总结:
    (1)Convert.ToInt32的参数比较多,Int.Parse只能转换string类型的.
    (2)Parse就是把String转换成int,char,double....等,也就是*.Parse(string) 括号中的一定要是string.
    (3)Convert可以提供多种类型的转换,也就是Convert.*()括号中可以为很多种类型(包括string).



     

               

     

             

              

            

     

  • 相关阅读:
    多线程 java 同步 、锁 、 synchronized 、 Thread 、 Runnable
    装饰设计模式 Decorator
    Java File IO 字节字符流
    觉得 eclipse 不好用的,了解一下快捷键,辅助快捷输入 类创建方式
    Power builder PB 使用 相关记录
    java 多态 深入理解多态-隐藏-低调-伪装
    Idea 出现 Error:java: Compilation failed: internal java compiler error
    Access 导入到 SQLServer
    20200117 .net 001
    Android ConstraintLayout详解(from jianshu)
  • 原文地址:https://www.cnblogs.com/zhulijun/p/6416731.html
Copyright © 2020-2023  润新知