Convert数据类型转换类,从接触C#开始,就一直在用,这篇日志做下深入的了解。
Convert类常用的类型转换方法
方法 | 说明 |
Convert.ToInt32() | 转换为整型(int) |
Convert.ToChar() | 转换为字符型(char) |
Convert.ToString() | 转换为字符串型(string) |
Convert.ToDateTime() | 转换为日期型(datetime) |
Convert.ToDouble() | 转换为双精度浮点型(double) |
Conert.ToSingle() | 转换为单精度浮点型(float) |
长类型(int、long)转换成短类型(byte、short)需要考虑容量的问题
转换为int型数据后进行了四舍五入的计算。
用convert类转换时注意数据表达方式的有效性,并不是任意类型之间都可以转换。比如string类型转int类型,string只能是数字。
示例:
int a = 1234; string asd = Convert.ToString(a); Console.WriteLine(asd); // 1234 Console.WriteLine(asd.GetType()); // System.string char qwe = Convert.ToChar(a); Console.WriteLine(qwe); // ? 字符只能是一位 Console.WriteLine(qwe.GetType()); // System.Char string dc = "4125"; int ws = Convert.ToInt32(dc); Console.WriteLine(ws); // 4125 Console.WriteLine(ws.GetType()); // System.Int32 string dates = "2019-05-31"; // 必须是字符串才能转换成datetime DateTime qa = Convert.ToDateTime(dates); Console.WriteLine(qa); // 2019/5/31 0:00:00 Console.WriteLine(qa.GetType()); // System.DateTime string zxc = "5.32"; double po = Convert.ToDouble(zxc); Console.WriteLine(po); // 5.32 Console.WriteLine(po.GetType());// System.Double float rf = Convert.ToSingle(zxc); Console.WriteLine(rf); // 5.32 Console.WriteLine(rf.GetType());// System.single
Convert 和 Parse区别:
1.Convert.ToDouble与Double.Parse的区别。实际上Convert.ToDouble与 Double.Parse 较为类似,实际上 Convert.ToDouble内部调用了 Double.Parse:
(1)对于参数为null的时候:
Convert.ToDouble参数为 null 时,返回 0.0;
double wer = Convert.ToDouble(null); // 0 Console.WriteLine(wer);
Double.Parse 参数为 null 时,抛出异常。
double ed = Double.Parse(null); // 报错 Console.WriteLine(ed);
(2)对于参数为""的时候:
Convert.ToDouble参数为 "" 时,抛出异常;
wer = Convert.ToDouble(""); Console.WriteLine(wer);
Double.Parse 参数为 "" 时,抛出异常。
double ed = Double.Parse(""); Console.WriteLine(ed);
(3)其它区别:
Convert.ToDouble可以转换的类型较多;
Double.Parse只能转换数字类型的字符串。
Double.TryParse 与 Double.Parse 又较为类似,但它不会产生异常,转换成功返回 true,转换失败返回 false。最后一个参数为输出值,如果转换失败,输出值为 0.0。
2.Convert.ToInt32()与int.Parse()的区别
(1)这两个方法的最大不同是它们对null值的处理方法:
Convert.ToInt32(null)会返回0而不会产生任何异常,但int.Parse(null)则会产生异常。
int cdf = Convert.ToInt32(null); // 0 Console.WriteLine(cdf); int pol = int.Parse(null); // 报错 Console.WriteLine(pol);
(2)对数据进行四舍五入时候的区别
a. Convert.ToInt32(double value)
如果 value 为两个整数中间的数字,则返回二者中的偶数;即 3.5转换为4,4.5 转换为 4,而 5.5 转换为 6。 不过4.6可以转换为5,4.4转换为4
int ppp = Convert.ToInt32(5.5); // 6 Console.WriteLine(ppp);
b. int.Parse("4.5")
直接报错:"输入字符串的格式不正确".
int aaa = int.Parse("4.5"); // 报错 Console.WriteLine(aaa);
c. int(4.6) = 4
Int转化其他数值类型为Int时没有四舍五入,强制转换
int lkj = (int)4.9; Console.WriteLine(lkj); // 4
(3)对被转换类型的区别
int.Parse是转换String为int
Convert.ToInt32是转换继承自Object的对象为int的(可以有很多其它类型的数据).
你得到一个object对象,你想把它转换为int,用int.Parse就不可以,要用Convert.ToInt32.
object obj = new object(); obj = (object)4; int aaaaa = Convert.ToInt32(obj); Console.WriteLine(aaaaa); int bbbbb = int.Parse(obj); // 这样写报错