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

news2024/11/24 6:19:40

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();
        }
    }
}

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/766382.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

优化CSS重置过程:探索CSS层叠技术的应用与优势

目录 下面是正文~~ CSS重置方法 方法的结合 合并方法的问题 通用移除样式 顺序很重要 CSS 优先级 我们的CSS特异性冲突 CSS Layers 来拯救 Sass 预处理器支持 浏览器支持 总结 这篇文章介绍了一种名为CSS层叠的技术,用于优化CSS重置过程。它解释了CSS重…

网络安全(黑客技术)最全面的学习笔记

学网络安全如何成为一名黑客呢? 整合了全知识点及学习框架,本篇零基础依然适用! 本篇涵盖内容及其全面,强烈推荐收藏! 一、学习网络安全会遇到什么问题呢? 1、学习基础内容多时间长 学习基础语言太多&…

基于MATLAB的无人机遥感数据预处理与农林植被性状估算教程

详情点击链接:基于MATLAB的无人机遥感数据预处理与农林植被性状估算前言 遥感技术作为一种空间大数据手段,能够从多时、多维、多地等角度,获取大量的农情数据。数据具有面状、实时、非接触、无伤检测等显著优势,是智慧农业必须采…

初中级PHP程序员如何进阶学习?

如果你是一个以PHP为主的开发人员,只会依赖现成的框架进行增删改查,想提高自己又不知道从何下手,你可以花点时间研究一下我这个开源项目:酷瓜云课堂,这个项目以PHPJS 为主,负责主要的业务逻辑,部…

基于遗传算法的新能源电动汽车充电桩与路径选择MATLAB程序

主要内容: 根据城市间的距离,规划新能源汽车的行驶路径。要求行驶距离最短。 部分代码: %% 加载数据 %%遗传参数 load zby;%个城市坐标位置 NIND50; %种群大小 MAXGEN200; Pc0.9; %交叉概率 Pm0.2; %变异概率 GGAP0.…

初识Redis——Redis概述、安装、基本操作

目录 一、NoSQL介绍 1.1什么是NoSQL 1.2为什么会出现NoSQL技术 1.3NoSQL的类别 1.4传统的ACID是什么 1.5 CAP 1.5.1 经典CAP图 1.5.4 什么是BASE 二、Redis概述 2.1 什么是Redis 2.2 Redis能干什么 2.3 Redis的特点 2.4 Redis与memcached对比 2.5 Redis的安装 2.6 Docker安装 三…

基于Redisson的Redis结合布隆过滤器使用

一、场景 缓存穿透问题 一般情况下,先查询Redis缓存,如果Redis中没有,再查询MySQL。当某一时刻访问redis的大量key都在redis中不存在时,所有查询都要访问数据库,造成数据库压力顿时上升,这就是缓存穿透。…

【Python基础】- break和continue语句

在Python中,break和continue是用于控制循环语句的特殊关键字。 break语句用于跳出当前的循环(for循环或while循环),并继续执行紧接着的循环外的代码。它通常用于满足某个条件时提前结束循环。例如,考虑以下示例&#…

《啊哈算法》第三章--枚举 与 暴力

文章目录 前言一、坑爹的奥数二、炸弹人三、火柴棍等式四、全排列总结 前言 前面我们学习了排序和栈 队列 链表&#xff0c;本节就学习暴力枚举的思想。 一、坑爹的奥数 题目1 □3 x 6528 3□ x 8256&#xff0c;在 □ 里填入相同数字使等式成立 代码如下 #include<ios…

PDF在线转PPT,不用下载软件网页在线即可转换!

PDF是我们经常在办公中使用的文件格式&#xff0c;它的兼容性和安全性使得它成为了传输文件的首选。而PPT则是我们常用的演示文稿格式&#xff0c;无论是在学校还是在公司&#xff0c;我们都需要制作演讲和汇报的PPT文件。由于这两种文件格式的重要性&#xff0c;我们经常需要进…

python的魔法函数

一、介绍 在Python中&#xff0c;魔法函数是以双下划线__开头和结尾的特殊函数。它们在类定义中用于实现特定的行为&#xff0c;例如运算符重载、属性访问、迭代等。 以下是一些常见的Python魔法函数&#xff1a; __init__: 这是一个特殊的构造函数&#xff0c;在创建类的实例…

JDBC中的Statement,PreparedStatement和CallableStatement

一旦获得连接&#xff0c;我们就可以与数据库进行交互。JDBC Statement、 CallableStatement 和 PreparedStatement 接口定义了方法和属性&#xff0c;这些方法和属性使您能够发送 SQL 命令并从数据库接收数据。 它们还定义了有助于弥合数据库中使用的 Java 和 SQL 数据类型之…

【阿Q送书第二期】《高并发架构实战:从需求分析到系统设计》

#挑战Open AI&#xff01;马斯克宣布成立xAI&#xff0c;你怎么看&#xff1f;# 文章目录 你想成为架构师嘛&#xff1f;架构经验高并发高并发架构实战特点值得推荐赠书规则 你想成为架构师嘛&#xff1f; 很多软件工程师的职业规划是成为架构师&#xff0c;但是要成为架构师很…

C语言-ubuntu下的命令

目录 linux命令 【1】打开关闭终端 【2】终端 【3】ls命令 【4】cd 切换路径 【5】新建 【6】删除 【7】复制 【8】移动 【9】常用快捷键 【10】vi编辑器 【11】简单编程步骤 任务&#xff1a; linux命令 【1】打开关闭终端 打开终端&#xff1a; 1. 直接点击 …

【1】Vite+Vue3 登录功能

一、介绍 在当今前端开发的领域里&#xff0c;快速、高效的项目构建工具以及使用最新技术栈是非常关键的。ViteVue3 组合为一体的项目实战示例专栏将带领你深入了解和掌握这一最新的前端开发工具和框架。 作为下一代前端构建工具&#xff0c;Vite 在开发中的启动速度和热重载…

sqlserver 获取根据特定符号分割字符串

CREATE function Get_StrArrayStrOfIndex (str varchar(1024), --要分割的字符串split varchar(10), --分隔符号index int --取第几个元素 ) returns varchar(1024) as begindeclare location intdeclare start intdeclare next intdeclare seed intset strltrim(rtrim(str))…

驾驶证——科目一笔记(三)

知识点1&#xff1a;红路灯 黄灯一直闪&#xff1a; 三个框的黄灯——信号暂时解除 一个框的黄灯——危险注意安全 知识点2&#xff1a;通行 看上半部分哪边有三角形 知识点2&#xff1a;禁停 知识点3&#xff1a;导向车道线 有齿可变&#xff0c;无齿导向&#xff08;按…

详解使用JAVA将Julian date(儒略日)日期转换为年月日

一、什么是Julian date 朱莉安日历和普通日历显示是不一样的我就举例演示一下 正常的日历显示 朱莉安的日历显示 174表示的是从2016年1月1日开始到今天已有174天了 普通日历是按月计数&#xff0c;朱莉安日历是按年计数 二、用java将julian日期转换为年月日 将2023199朱莉安…

微信小程序主体名称迁移流程

前言 因一些业务需求&#xff0c;需更换小程序主体名称 按理说&#xff0c;有两种方法&#xff0c; 第一种&#xff1a;重新注册小程序 第二种&#xff1a;在微信公众平台 → 设置 → 基本信息 → 主体信息 → 小程序迁移 第一种方法操作起来是很简单&#xff0c;但是呢&…

ubuntu 20.04 4090 显卡驱动安装 深度学习环境配置

1. 显卡驱动安装 准备工作&#xff1a; 换源安装输入法&#xff1a;重启的步骤先不管&#xff08;自选&#xff09;sudo apt update && sudo apt upgrade 禁用nouveau驱动&#xff08;这个驱动是ubuntu开源小组逆向破解NVIDIA的开源驱动&#xff0c;与英伟达的原有驱…