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); // 这样写报错
测试使用全部代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Convertss
{
class Program
{
static void Main(string[] args)
{
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
double wer = Convert.ToDouble(null); // 0
Console.WriteLine(wer);
/*double ed = Double.Parse(null); // 报错
Console.WriteLine(ed);//*/
/* wer = Convert.ToDouble("");
Console.WriteLine(wer);
double ed = Double.Parse("");
Console.WriteLine(ed);//*/
int cdf = Convert.ToInt32(null); // 0
Console.WriteLine(cdf);
/*int pol = int.Parse(null); // 报错
Console.WriteLine(pol);//*/
int ppp = Convert.ToInt32(5.5); // 6
Console.WriteLine(ppp);
/*int aaa = int.Parse("4.5"); // 报错
Console.WriteLine(aaa);//*/
int lkj = (int)4.9;
Console.WriteLine(lkj); // 4
object obj = new object();
obj = (object)4;
int aaaaa = Convert.ToInt32(obj);
Console.WriteLine(aaaaa);
// int bbbbb = int.Parse(obj); // 这样写报错
Console.ReadLine();
}
}
}
有好的建议,请在下方输入你的评论。