C#数据类型的转化
简述:类型转换从根本上说是类型铸造,或者说是把数据从一种类型转换为另一种类型。在 C# 中,类型铸造有两种形式隐式类型转换与显式类型转换
基本的数据类型
一、隐式类型转换
隐式类型转换 --- C# 默认的以安全方式进行的转换, 不会导致数据丢失。例如,从小的整数类型转换为大的整数类型,从派生类转换为基类。
二、显式类型转换
显式类型转换 --- 即强制类型转换。显式转换需要强制转换运算符,而且强制转换会造成数据丢失。
namespace TypeConversionApplication
{
class ExplicitConversion
{
static void Main(string[] args)
{
double d = 5673.74;
int i;
// 强制转换 double 为 int
i = (int)d;
Console.WriteLine(i);
Console.ReadKey();
}
}
}
三、C#中方法类型转换
3.1、C#内置后缀式类型转换
备注:上述内置类型转化函数除了ToString方法最常用外,其它基本在开发中都不怎么使用,如需使用都用的是covert中的转化方法。
3.2、Convert方法与xxx.Parse方法
Convert方法 |
功能描述 |
Convert.ToInt32() |
转换为整型(int) |
Convert.ToChar() |
转换为字符型(char) |
Convert.ToString() |
转换为字符串型(string) |
Convert.ToDateTime() |
转换为日期型(datetime) |
Convert.ToDouble() |
转换为双精度浮点型(double) |
Conert.ToSingle() |
转换为单精度浮点型(float) |
Parse方法 |
功能描述 |
int.Parse(string类型变量名) |
转换为整型(int) |
int.TryParsestring s, out int result |
转换为整型(int) |
Int32.Parse |
转换为整型(int) |
Double.Parse() |
转换为双精度浮点型(double) |
3.2.1、Convert 与 Parse 区别
实际开发项目的过程中,我们碰到需要被转换的类型大概有3大类,分别是空值(NULL)、数字类型(包含float,double,int,long等)和字符串(string)这3类。以下以Convert.ToInt32()、int.Parse() 、int.TryParse()为例介绍三者之间的区别。
1、int.Parse(string类型变量名) 该方式是将数字内容的字符串转为int类型
1、参数必须为字符串型,如果字符串内容不是数字或不是整形,则抛出FormatException异常;
2、如果字符串内容为空或者null时,则抛出ArgumentNullException异常;
3、如果字符串内容所表示数字超出int类型可表示的范围,则抛出OverflowException异常
4、使用该方法切忌的一点就是只能处理字符串内容,而且字符串内容只能在int类型可表示的范围之内
2、int.TryParse(string s, out int result) 该方式也是将数字内容的字符串转为int类型
1、该方式比int.Parse优越的地方,就是它不会出现异常。如果转换成功返回 true,如果转换失败返回 false。很明显,最后一个参数为输出值,如果转换失败,输出值为 0;如果转换成功,则输出相应的值。
//例如:1.将字符串“12345”转换成数值数据12345,实现如下:
bool=ryParse("12345",int result);
bool=true;
result=12345; //成功
3、Convert.ToInt32()
1、该方式不仅可以将字符串转为int类型,还可以将其它类型的值转成int类型。变量若为object或string类型,当其值为null时,会传回0,不会造成程序错误。
2、该方式对于浮点数会做四舍五入。
3、该方式同强制转换一样,不能用来处理char类型,否则传回的是ASCII代码。
Convert.ToInt32("12345"); //将字符串“12345”转换成数值数据12345
Convert.ToInt32(3.14); //将小数型“3.14”转换成整数型数据 !!!!int.Parse("4.5") 异常
Convert.ToInt32('true'); //将字符型'true'转换成布尔型数据
3.3、 int与string转化
int a = 15;
string s1 = a.ToString();
string s2 = Convert.ToString(a);
存在问题:这两种转换方法有何差别?
1、ToString()函数能用来完成数值型数据向字符串类型的转换
2、Convert.ToString()则是强制转换,无论数据是什么样类型的都可以通过使用这个方法将其转换成字符串类型的。
3、Tostring也可来完成字符向字符串类型的转换,大体上两者的功能是相同的。
4、tosring()方法不接受空的参数,否则编译报错。Convert.tostring方法支持空对象。
string s = "18";
int a1 = int.Parse(s);
int a2; int.TryParse(s, out a2);
int a3 = Convert.ToInt32(s);
1、Convert对int与string进行来回转化,并且可以指定转化的进制
2、int转化为string,可以使用ToString方法或 Convert.ToString()
3、String转化为int,可以使用int.Parse或者int.TryParse方法。
备注:为什么没有string.Parse和string.TryParse方法?不需要,ToString就可以了。
|
请发表评论