当前位置: 首页 > news >正文

C#(六十)之Convert类 和 Parse方法的区别

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);  // 1234Console.WriteLine(asd.GetType()); // System.stringchar qwe = Convert.ToChar(a);Console.WriteLine(qwe);  // ?  字符只能是一位Console.WriteLine(qwe.GetType());  // System.Charstring dc = "4125";int ws = Convert.ToInt32(dc);Console.WriteLine(ws);  // 4125Console.WriteLine(ws.GetType());  // System.Int32string dates = "2019-05-31"; // 必须是字符串才能转换成datetimeDateTime qa = Convert.ToDateTime(dates);Console.WriteLine(qa);  // 2019/5/31 0:00:00Console.WriteLine(qa.GetType()); // System.DateTimestring zxc = "5.32";double po = Convert.ToDouble(zxc);Console.WriteLine(po);  // 5.32Console.WriteLine(po.GetType());// System.Doublefloat rf = Convert.ToSingle(zxc);Console.WriteLine(rf);  // 5.32Console.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);  // 1234Console.WriteLine(asd.GetType()); // System.stringchar qwe = Convert.ToChar(a);Console.WriteLine(qwe);  // ?  字符只能是一位Console.WriteLine(qwe.GetType());  // System.Charstring dc = "4125";int ws = Convert.ToInt32(dc);Console.WriteLine(ws);  // 4125Console.WriteLine(ws.GetType());  // System.Int32string dates = "2019-05-31"; // 必须是字符串才能转换成datetimeDateTime qa = Convert.ToDateTime(dates);Console.WriteLine(qa);  // 2019/5/31 0:00:00Console.WriteLine(qa.GetType()); // System.DateTimestring zxc = "5.32";double po = Convert.ToDouble(zxc);Console.WriteLine(po);  // 5.32Console.WriteLine(po.GetType());// System.Doublefloat rf = Convert.ToSingle(zxc);Console.WriteLine(rf);  // 5.32Console.WriteLine(rf.GetType());// System.singledouble wer = Convert.ToDouble(null);  // 0Console.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);  // 0Console.WriteLine(cdf);/*int pol = int.Parse(null);  // 报错Console.WriteLine(pol);//*/int ppp = Convert.ToInt32(5.5);  // 6Console.WriteLine(ppp);/*int aaa = int.Parse("4.5");  // 报错Console.WriteLine(aaa);//*/int lkj = (int)4.9;Console.WriteLine(lkj);  // 4object obj = new object();obj = (object)4;int aaaaa = Convert.ToInt32(obj);Console.WriteLine(aaaaa);// int bbbbb = int.Parse(obj);  // 这样写报错Console.ReadLine();}}
}

有好的建议,请在下方输入你的评论。

 

http://www.lryc.cn/news/95004.html

相关文章:

  • 暑期代码每日一练Day3:874. 模拟行走机器人
  • 肖sir___环境相关的面试题
  • 代理IP、Socks5代理和SK5代理的前沿技术与未来发展趋势
  • VM(CentOS7安装和Linux连接工具以及换源)
  • 阿里云斩获 4 项年度云原生优秀案例丨阿里云云原生 6 月动态
  • dede图片集上传图片时出错显示FILEID的解决办法
  • 【亲测有效】 通过mysql指令 导出数据库中表名 和 表名的备注
  • 【Nginx08】Nginx学习:HTTP核心模块(五)长连接与连接处理
  • 第八十五天学习记录:C++核心:内存分区模型
  • Chrome远程调试webview
  • 爬虫与反爬虫的攻防对抗
  • 【机器学习】特征工程 - 字典特征提取
  • 用户交互----进入游戏
  • 排序算法 - 快速排序(4种方法实现)
  • C++入门知识点
  • 开眼界了,AI绘画商业化最强玩家是“淘宝商家”
  • 机器学习与深度学习——自定义函数进行线性回归模型
  • 大屏项目也不难
  • c#webclient请求中经常出现的几种异常
  • 设计模式-原型模式
  • sentinel介绍-分布式微服务流量控制
  • 基于Redisson的Redis结合布隆过滤器使用
  • BrowserRouter刷新404解决方案
  • 解决appium-doctor报opencv4nodejs cannot be found
  • 安卓通过adb pull和adb push 手机与电脑之间传输文件
  • java常用的lambda表达式总结
  • 分布式应用之zookeeper集群+消息队列Kafka
  • GStreamer学习笔记(四)
  • DBeaver连接华为高斯数据库 DBeaver连接Gaussdb数据库 DBeaver connect Gaussdb
  • .net core 2.1 简单部署IIS运行