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).



 

           

 

         

          

        

 

原文地址:https://www.cnblogs.com/zhulijun/p/6416731.html