C#数据类型转换

本文介绍了C#中数据类型转换的基本概念,包括隐式转换和显式转换。隐式转换是从小类型到大类型的自动转换,而显式转换需要强制操作且可能丢失精度。还讨论了ToString和Parse方法在不同类型间转换的应用。最后提到了C#内置的类型转换方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@作者: 风不停息丶
在这里插入图片描述


基本类型转换

变量声明后,类型固定了,只能赋某种类型的数值,如果要赋值其他类型的数据就需要将其他类型转换为该类型。
例如︰从控制台中获取用户输入的内容,其结果只能为string类型。若想得到其他类型数据,必须做类型转换。

Console.WriteLine("请输入年龄");
string strAge = Console.ReadLine();
int i = int.Parse(strAge);//Parse方法

隐式转换

由小类型到大类型的自动转换。
多种类型变量参与的运算,会产生类型提升

其中一方为long类型,结果为long类型
其中一方为float类型,结果为float类型
其中一方为double类型,结果为double类型
其中一方为decimal类型,结果为decimal类型
其余运算结果为int类型

隐式数值转换包括以下几种:
从 sbyte 类型到 short,int,long,float,double,或 decimal 类型。
从 byte 类型到 short,ushort,int,uint,long,ulong,float,double,或 decimal 类型。
从 short 类型到 int,long,float,double,或 decimal 类型。
从 ushort 类型到 int,uint,long,ulong,float,double,或 decimal 类型。
从 int 类型到 long,float,double,或 decimal 类型。
从 uint 类型到 long,ulong,float,double,或 decimal 类型。
从 long 类型到 float,double,或 decimal 类型。
从 ulong 类型到 float,double,或 decimal 类型。
从 char 类型到 ushort,int,uint,long,ulong,float,double,或 decimal 类型。
从 float 类型到 double 类型。

其中,从 int,uint 或 long 到 float 以及从 long 到 double 的转换可能会导致精度下降,但决不会引起数量上的丢失。其它的隐式数值转换则不会有任何信息丢失。

int i=1;
long l=i;
long result = i+l;//隐式转换:由小范围到大范围的自动类型转换(一定可以成功)

显式转换

由大类型到小类型的强制转换。
强制类型转换的语法如下:

  • 数据类型变量名 = (数据类型) 变量名或值;

这里要求等号左、右两边的数据类型是一致的。例如将 double 类型转换成 int 类型,代码如下。
这样虽然能将值进行类型的转换,但损失了数据的精度,造成了数据的不准确,因此在使用强制类型转换时还需要注意数据的准确性。

double dbl_num = 12345678910.456;
int k = (int) dbl_num ;//此处运用了强制转换

浮点型和decimal类型之间不存在隐式转换。因此,必须使用显式转换。
非整形只能显式转换到整形。


ToString转换

任意类型转换为字符串类型。

int num = 100;
string strNumber = num.ToString();

Parse转换

字符串类型转换为其他类型

string strNumber = "100";
int num = int.Parse(strNumber);

若字符串未被识别为该类型的有效值,则程序抛异常。

int number01 = int.Parse("1.0");//输出会报错
float number02= float.Parse("1.0f");//输出会报错

C# 提供的一系列内置的类型转换方法

  • 如下表所示:
方法描述
ToBoolean将类型转换为布尔型
ToByte将类型转换为字节类型
ToChar将类型转换为单个 Unicode 字符类型
ToDateTime将类型(整数或字符串类型)转换为日期时间的结构
ToDecimal将浮点型或整数类型转换为十进制类型
ToInt16将类型转换为 16 位整数类型
ToInt32将类型转换为 32 位整数类型
ToInt64ToInt64将类型转换为 64 位整数类型
ToSbyte将类型转换为有符号字节类型
ToSingle将类型转换为小浮点数类型
ToString将类型转换为字符串类型
ToType将类型转换为指定类型
ToUInt16将类型转换为 16 位无符号整数类型
ToUInt32将类型转换为 32 位无符号整数类型
ToUInt64将类型转换为 64 位无符号整数类型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风不停息丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值