C#的类型转换

在计算机中,所有的数据都是以0和1的形式存在的,变量的含义是通过数据的这种解释方式来传达的。在实际应用中很多地方要用到不同数据类型之间的转换,请看下面的一个例子

string str = null;

double num=null;

Console.WriteLine("enter a serial of numbers:\t");

str = Console.ReadLine();//读取一行数字

num = Convert.ToDouble(str);//字符串转换成数字

类型转换包括有两种方法:

隐式转换和显式转换,下面将分别介绍这两种方法。

一. 隐式转换

隐式转换不要做任何工作,不要编写其他的代码,可以直接转换。

请看:


ushort num1;

char ch='a';

num1 = ch;



num1 = 98;

ch = num1;// (1)


错误:法将类型“ushort”隐式转换为“char”。存在一个显式转换(是否缺少强制转换?)

如果将上面的(1)处的代码改为:ch = (char)num1;那么编译的时候就没有错误,这种方法就是显式转换。其结果如下:


ushort num1;

char ch='a';

num1 = ch;//直接转换



num1 = 98;

ch = (char)num1;//间接转换,num1的前面多了个char.


从上图可以看出隐式和显式转换的一些区别了。

二、显式转换

显式转换有个很明显的标识,在要转换的数据之前有个标识符,例如:

ch = (char)num1。当然显式转换不止只有这个方法,还可以用Convert方法来处理数据的转换。

先看下几个例子,再对照后面给出的两个表格的来验证。本文发表于编程入门网:www.bianceng.cn


int age = 22;

double myage = (double)age; //显式转换

Console.WriteLine("int age={0}", age);

Console.WriteLine("double myage={0}", myage);

float price = 55.55F;

decimal cupon = Convert.ToDecimal(price); //

使用Convert方法来处理。

Console.WriteLine("float price={0}", price);

Console.WriteLine("decimal cupon={0}", cupon);


下面的两个表格在变量的转换过程中国比较重要,特别是Convert的各种方法

表1:左边类型可以无错误的直接成功转换为右边的类型


类型


编译器隐式执行的转换


byte


short,ushort,int,uint,long,ulong,float,double,decimal


sbyte


short,int,long,float,double,decimal


short


int,long,float,double.decimal


ushort


int,uint,float,ufloat,double,decimal


int


long,float,double,decimal


uint


float,double,decimal,


long


float,double,decimal


ulong


float,double,decimal


float


double


char


ushort,int,uint,long,ulong,float,double,decimal

这些转换与两种数据的长度相关,这个表不需要记住,在实际编程过程中如果有什么错误,系统编译器会自动提醒。

表2:类Convert的常用方法:类型1 var1=Convert.method(var2);


Convert.ToBoolean();


Convert.ToInt64()


Convert.ToByte();


Convert.ToSByte();


Convert.ToChar();


Convert.ToString();


Convert.ToDecimal()


Convert.ToSingle();


Convert.ToDouble()


Convert.ToUInt16();


Convert.ToDateTime()


Convert.ToUInt32();


Convert.ToDouble();


Convert.ToUInt64();


Convert.ToInt16();


Convert.ToInt32()

以上16个方法中只有几个在实际编程过程中用到很多,特别是Convert.ToString();Convert.ToChar();

Convert.ToDateTime()这几个使用频率很高,大家要自己编程体会,下一节将会介绍C#中常用的3种复杂类型变量:结构体,数组和枚举类型。

时间: 2024-09-13 19:50:59

C#的类型转换的相关文章

springMVC4(9)属性编辑器剖析入参类型转换原理

我们通过Http请求提交的参数都以字符串的形式呈现,但最终在springMVC的方法入参中,我们却能得到各种类型的数据,包括Number.Boolean.复杂对象类型.集合类型.Map类型等,这些都是springMVC内置的数据类型转换器帮我们完成的.springMVC的将请求数据绑定到方法入参的流程如下所示: Created with Raphaël 2.1.0数据绑定流程图解ServletRequestServletRequestDataBinderDataBinderConversionS

C#中的类型转换

转换 C# 出来也有些日子了,最近由于编程的需要,对 C# 的类型转换做了一些研究,其内容涉及 C# 的装箱/拆箱/别名.数值类型间相互转换.字符的 ASCII 码和 Unicode 码.数值字符串和数值之间的转换.字符串和字符数组/字节数组之间的转换.各种数值类型和字节数组之间的转换.十六进制数输出以及日期型数据的一些转换处理,在这里与大家分享-- 1. 装箱.拆箱还是别名 许多 C#.NET 的书上都有介绍 int -> Int32 是一个装箱的过程,反之则是拆箱的过程.许多其它变量类型也是

Swift数据类型及数据类型转换

整型      Swift 提供 8.16.32.64 位形式的有符号及无符号整数.这些整数类型遵循 C 语言的命名规 约,如 8 位无符号整数的类型为 UInt8,32 位 有符号整数的类型为 Int32.与 Swift 中的所有 类型一样,这些整数类型的名称以大写字母开 头.   Swift 还提供了一个整数类型Int:      在 32 位平台,Int 与 Int32 宽度一致.      在 64 位平台,Int 与 Int64 宽度一致.              Swif

emit-dapper.net IDataReader数据类型转换报错:操作可能会破坏运行时稳定性

问题描述 dapper.net IDataReader数据类型转换报错:操作可能会破坏运行时稳定性 object item3 = ((IDataRecord)this)[num8]; if (item3 is DBNull) { } else { string str1 = item3 as string; str = str1; if (str1 == null) { pluginType = (PluginType)Convert.ToByte(item3); } else { plugin

C++中四种显示类型转换总结

#include <iostream> using namespace std;   /*  *四种显示类型转换  **/   int main(){      /* static_case 类型转换*/     double a=1.1213;     int b=static_cast<int>(a);     class base{};     class father:public base{};     father f;     base ba=static_cast&

ado net-Datatable dt 接受 sqldatereader 总是出现类型转换失败

问题描述 Datatable dt 接受 sqldatereader 总是出现类型转换失败 DAL 是用 sqldatereader 写的 在Load cs里面 Datatable dt 接受 sqldatereader ## 总是出现类型转换失败 如 List u= DAL.sqldatereader .... Datatable dt= DAL.sqldatereader.... 都失败 解决方案 本来就不能这么转换,你可以写 List<user> u = new List<user

这样的的类型转换要怎么破

问题描述 这样的的类型转换要怎么破 解决方案 在后面加上Select(x => new KeyValuePair<string string>(x.某个字段 x.某个字段)).ToList()

小心MySQL的隐式类型转换陷阱

1. 隐式类型转换实例 今天生产库上突然出现MySQL线程数告警,IOPS很高,实例会话里面出现许多类似下面的sql:(修改了相关字段和值) SELECT f_col3_id,f_qq1_id FROM d_dbname.t_tb1 WHERE f_col1_id=1226391 and f_col2_id=1244378 and f_qq1_id in (12345,23456,34567,45678,56789,67890,78901,89012,90123,901231,901232,90

java中举个向上类型转换,向下类型转换的例子瞧瞧

问题描述 java中举个向上类型转换,向下类型转换的例子瞧瞧 java中举个向上类型转换,向下类型转换的例子看看,谢谢.类型的上下转换仅限父类和子类之间吗基本数据类型之间的转换有上下类型转换这一种说法吗 解决方案 通俗地说,由于继承关系的存在,父类拥有的,子类也拥有:而子类额外有的,父类肯定没有.例如:父类为动物,那么子类阿猫肯定是动物,但是动物不一定是阿猫. Animal a = new Animal();Cat cat = new Cat();a = cat;//可以将子类对象付给父类对象,

Delphi的类型转换

Delphi是一种强类型转换的语言.在VC中,赋值符用″=″,例如x=1;到了Delphi赋值符就变成了″:=″,例如x:=1. 从赋值时用符号″:=″而不用″=″,就隐约可见Delphi对类型匹配要求之严,即赋值符右边的类型一定要和左边一致. 用惯了VB或VC的程序员,初用Delphi,稍不留神,就会出现类型不匹配的错误.对初学者而言,类型转换也是学习Delphi的重点和难点,为此本文特对Delphi的类型转换做一总结,以供读者参考. 一.数的类型转换 把表达式的类型从一种类型转化为另一种类型