当前位置: 首页 > 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();}}
}

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

 

相关文章:

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

Convert数据类型转换类,从接触C#开始,就一直在用,这篇日志坐下深入的了解。 Convert类常用的类型转换方法 方法 说明 Convert.ToInt32() 转换为整型(int) Convert.ToChar() 转换为字符型(char) Convert.ToString() 转换为字符串型(st…...

暑期代码每日一练Day3:874. 模拟行走机器人

题目 874. 模拟行走机器人 分析 这道题就是个简单的模拟 主要有两点考察点: 对方向数组的运用 方向数组存储的是各个方向的单位向量,也即: 方向XY向北01向东10向南0-1向西-10 存储在数组中,则是方向数组: in…...

肖sir___环境相关的面试题

环境相关面试题 1、请简述多有米环境的搭建、用到了哪些工具和流程介绍? jdk、服务器、代码包、数据库 2、查看当前端口被哪个应用程序占用了? netstat -ntlp |grep 端口号 lsof -i :端口号 ps -ef|grep 端口号 3、Tomcat和Nginx的区别,ngi…...

代理IP、Socks5代理和SK5代理的前沿技术与未来发展趋势

代理IP的前沿技术应用 人工智能与智能代理:结合人工智能技术,代理IP可以更加智能地处理网络请求和数据流,提高代理效率和准确性。区块链与去中心化代理:通过区块链技术,代理IP可以实现去中心化管理和身份验证&#xf…...

VM(CentOS7安装和Linux连接工具以及换源)

目录 一、Linux意义 二、安装VMWare 三、centos7安装 1、正式安装CentOS7: 2、安装不了的解决方案 2.1常见问题——虚拟机开机就黑屏的完美解决办法 3、查看、设置IP地址 ① 查看ip地址:ip addr 或者 ifconfig, 注意与windows环境的区别…...

阿里云斩获 4 项年度云原生优秀案例丨阿里云云原生 6 月动态

云原生月度动态 ✦ CLOUD NATIVE 云原生是企业数字创新的最短路径。 《阿里云云原生每月动态》,从趋势热点、产品新功能、服务客户、开源与开发者动态等方面,为企业提供数字化的路径与指南。 本栏目每月更新。 01 趋势热点 🥇 阿里云 S…...

dede图片集上传图片时出错显示FILEID的解决办法

如果遇到过这问题的,就可以照此方法尝试了。 某日,某使用deecms v5.5的网站在后台上传图片时出现如下错误: 作为web生手的我很是迷茫。印象里之前并没有做什么改动,于是百思不得其解。Google、百度、DeDe官网搜索了一大圈&#xf…...

【亲测有效】 通过mysql指令 导出数据库中表名 和 表名的备注

标题你可以使用以下MySQL指令来导出数据库中表名和表名的备注: SELECT table_name, table_comment FROM information_schema.tables WHERE table_schema 你的数据库名;将上述指令中的"你的数据库名"替换为你实际使用的数据库名称,执行该指…...

【Nginx08】Nginx学习:HTTP核心模块(五)长连接与连接处理

Nginx学习:HTTP核心模块(五)长连接与连接处理 HTTP 基础知识大家掌握的怎么样呀?对于长连接这一块的内容应该也不是什么新鲜东西了吧。毕竟 HTTP1.1 都已经发布这么久了。今天主要来看的就是长连接相关的配置,另外还会…...

第八十五天学习记录:C++核心:内存分区模型

内存分区模型 C程序在执行时,将内存大方向划分为4个区域 1、代码区:存放函数体的二进制代码,由操作系统进行管理 2、全局区:存放全局变量和静态变量以及常量 3、栈区:由编译器自动分配释放,存放函数的参数…...

Chrome远程调试webview

网址 谷歌远程调试解决方案 https://blog.csdn.net/m0_56516186/article/details/131260563Chrome远程调试webview https://blog.csdn.net/weixin_44801980/article/details/117755550...

爬虫与反爬虫的攻防对抗

一、爬虫的简介 1 概念 爬虫最早源于搜索引擎,它是一种按照一定的规则,自动从互联网上抓取信息的程序,又被称为爬虫,网络机器人等。按爬虫功能可以分为网络爬虫和接口爬虫,按授权情况可以分为合法爬虫和恶意爬虫。恶…...

【机器学习】特征工程 - 字典特征提取

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 字典特征提取 一、特征提取API一、提取数字特征二、特征名字三、返回原始数据特征工…...

用户交互----进入游戏

一、增加交互----点击和拖动 1、点击鼠标画点的程序 设置 import pygame # Setup pygame.init() screen pygame.display.set_mode([800,600]) pygame.display.set_caption("单击画圆点") keep_going True RED (255,0,0) …...

排序算法 - 快速排序(4种方法实现)

快速排序 快速排序是啥?三数取中:1.挖坑法(推荐掌握)2.前后指针法(推荐掌握)3.左右指针法(霍尔版本)(容易出错)4.非递归实现 本篇文章的源代码在这&#xff0…...

C++入门知识点

目录 命名空间 命名空间定义 命名空间使用 法一:加命名空间名称及作用域限定符:: 法二:使用using部分展开(授权)某个命名空间中的成员 法三:使用using对整个命名空间全部展开(授权…...

开眼界了,AI绘画商业化最强玩家是“淘宝商家”

图片来源:由无界AI生成 7月,2023世界人工智能大会在上海召开,顶尖的投资人、创业者都去了。 创业者吐槽:投我啊,我很强。 投资人反问:你的商业模式是什么?护城河是什么? 创业者投资人…...

机器学习与深度学习——自定义函数进行线性回归模型

机器学习与深度学习——自定义函数进行线性回归模型 目的与要求 1、通过自定义函数进行线性回归模型对boston数据集前两个维度的数据进行模型训练并画出SSE和Epoch曲线图,画出真实值和预测值的散点图,最后进行二维和三维度可视化展示数据区域。 2、通过…...

大屏项目也不难

项目环境搭建 使用create-vue初始化项目 npm init vuelatest准备utils模块 业务背景:大屏项目属于后台项目的一个子项目,用户的token是共享的 后台项目 - token - cookie 大屏项目要以同样的方式把token获取到,然后拼接到axios的请求头中…...

c#webclient请求中经常出现的几种异常

WebClient是.NET Framework提供的用于HTTP请求的类,如果在使用WebClient时遇到异常,我们可以根据具体的异常类型进行处理。 以下是一些常见的WebClient异常及其处理方法: System.Net.WebException WebException通常是由于请求超时、网络连…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

【单片机期末】单片机系统设计

主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案

目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...