千家信息网

C#数据类型转换有哪些

发表于:2024-10-24 作者:千家信息网编辑
千家信息网最后更新 2024年10月24日,本篇内容介绍了"C#数据类型转换有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C# 的类型转换
千家信息网最后更新 2024年10月24日C#数据类型转换有哪些

本篇内容介绍了"C#数据类型转换有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

C# 的类型转换有显式转型 和 隐式转型 两种方式。

  • 显式转型:有可能引发异常、精确度丢失及其他问题的转换方式。需要使用手段进行转换操作。

  • 隐式转型:不会改变原有数据精确度、引发异常,不会发生任何问题的转换方式。由系统自动转换。

不同类型的数据进行操作(加减乘除赋值等等),是需要进行 类型转换 后,才能继续操作。所以需要"类型转换"。

隐式转型

隐式转型容易理解,当两种或多种数据类型进行某种操作时,不需要干预,系统会自动进行隐式转换。

int i = 66666;long b = i;    //转为 long 类型后为 b 赋值

通常情况下,多种 值类型 进行计算时,系统会自动进行隐式转型,并且总是转为范围更大的数据类型,并且不会发生精确度变化、数字大小变化等等。

显式转型

问题是,但你需要把一个 long 类型的数据转成 int 时,又或者让 string 与 int 互转,当数据小数点太多时,这时候就必须使用显式转型。

在继续下列教程前,要想说明一点。

char 是整型!

虽然char存储的是字符而不是数字,但它的确是整型,翻回上面看一下图,可以发现。

也就是说,char是可以参与算术运算的。但并不是直接参与,而是char的基础值。c# 中的char值是基于Unicode的。通过Unicode,任意字符都可以解释成数字。

一,使用 ([type]) 转型操作符

此方法适用与值类型转换( string属于引用类型)

在需要转换的变量前加上( [类型] )即可

请仔细观察下面两图的差异

第二张图中的代码中,第二行,为 int b = (int)i;

在需要转换的变量前使用 ([type]) 这种格式进行转换,如(int)、(float)、(long)

注意,

此种方法只能对值类型数据进行转换。

不应将范围大的类型 往 小 转换 或 将浮点型转为整形,不能将超范围的往小了转。

例如 float 转为 int,精确度会被自动丢失

输出 666

将大于其类型范围的数给它时,会发生溢出。

char 可以直接跟 int 或 long 使用。

int a ='1' + '3';  //小转大char b = (char)a;  //大转小
int c = 'a' + '5';  //char可以直接转为 int
注意上下例子的不同 ,int 直接转为char,会报错

第二,[Type].Parse()

([type]) 方法是无法在值类型、引用类型( string 类型)间转换的。

但每种数据类型都提供一个Parse()方法,它允许把字符串转成对应的 数值类型。

int.Parse()

float.Parse()

请看例子

string str = "666";long i = int.Parse(str);Console.WriteLine($"{i},{i.GetType()}");Console.ReadKey();

(图如)

注意,

Parse() 是专为 string 类型转成 值类型 提供功能的!

Parse() 是为符合数字格式的 string 类型进行转换!

下面的例子都是错误用法 !

Parse() 是将符合数字格式的字符串转为数字,也就是说,

  • ( )括号内的必须为字符串 !

  • 字符串的内容必须为数字 !

例子 1 ( ) 括号内的内容不是字符串

例子 2 变量 str 的内容不是 有效数字格式

第三,[Type].TryParse()

格式如下

  • int.TryParse()

  • float.TryParse()

.TryParse()与.Parse()相似,但是使用形式不太一样,

[类型].TryParse(要更改的字符串,out 存储到哪个变量); 

最重要的不同点在于,.TryParse() 在转换失败时,不会引发异常,而是返回 flase

例子

        string str = "666";        int i;        bool b = int.TryParse(str,out i);    //接收转换结果或者         string str = "666";        int i;        int.TryParse(str,out i);    //不接收转换结果

如果你不知道 out 的使用,请查阅C#中的out参数/ref参数/params可变参数

第四,System.Convert

方法例子

System.Convert.ToSingle();

System.Convert.ToInt32();

System.Convert.ToDouble();

System.Convert 允许将一种类型转为另一种类型。

常见 类型列表: char、sbyte、short、int、long、uint、ulong、float、double、decimal、string、bool ... ...

但是,同样需要格式支持!

string str = "666";int a= System.Convert.ToInt32(str);        //正确 string str = "666.66";int a= System.Convert.ToInt32(str);        //报错 int a = 66666;bool c = System.Convert.ToBoolean(a);        //正确 string str = "666.66";bool c = System.Convert.ToBoolean(str);        //报错

System.Convert 在转换是也需要注意 格式 才能转换成功。

同样,此方式也会发生精确度、数字大小改变

第五,System.Convert

.Tostring()

每种数据类型都提供了转为字符串类型的方法 ToString()

无论是值类型还是DateTime 等各种引用类型。

ToString()使用方法最为简单,请留意下列例子的红色背景部分

using System;using System.IO;public class Test{    static void Main()    {        int a = 666;        string aa = a.ToString();        Console.WriteLine($"{aa}");        float b = 666.666F;        string bb = b.ToString();        Console.WriteLine($"{bb}");        DateTime c = DateTime.Now;        string cc = c.ToString();        Console.WriteLine($"{cc}");        FileInfo d = new FileInfo("E:\\test.txt");        string dd = d.ToString();        Console.WriteLine($"{dd}");        string ee;        try        {            int x = 1;            int y = 0;            int e = x / y;        }        catch (Exception ex)        {            ee = ex.ToString();            Console.WriteLine($"{ee}");        }        Console.ReadKey();    }}

看到了吧?无论什么类型,只需在后面加上 ToString() , 都能 输出 string 类型的内容。(不是转为 string 类型!)

当然,ToString() 是一个方法,并提供了 一下传入参数,每种类型都有几个重载的 TOString() 方法,例如DateTime的

public string ToString(string format, IFormatProvider provider);public string ToString(string format);public string ToString(IFormatProvider provider);public override string ToString();

其它方面不再赘述。

复制下列代码到控制台,看看输出了什么

using System;using System.IO;public class Test{    static void Main()    {        int a = 666;        string aa = a.ToString();        Console.WriteLine($"{aa}");        float b = 666.666F;        string bb = b.ToString();        Console.WriteLine($"{bb}");        DateTime c = DateTime.Now;        string cc = c.ToString();        Console.WriteLine($"{cc}");        FileInfo d = new FileInfo("E:\\test.txt");        string dd = d.ToString();        Console.WriteLine($"{dd}");        string ee;        try        {            int x = 1;            int y = 0;            int e = x / y;        }        catch (Exception ex)        {            ee = ex.ToString();            Console.WriteLine($"{ee}");        }        Console.ReadKey();    }}

"C#数据类型转换有哪些"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

类型 数据 字符 数字 例子 方法 字符串 格式 内容 精确 精确度 C# 参数 变量 方式 输出 不同 系统 范围 问题 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络运营违反网络安全法 什么是网络安全接入控制 单片机用哪些软件开发 构建客户服务信息数据库的要点 为啥玩游戏老是服务器连接不上 系统集成软件开发的经营范围 电脑的网络安全模式重启 有没有软件开发找不到工作 网易服务器作弊 健康宝扫码显示网络安全怎么办 华为服务器维护模式 腾讯是什么服务器 我的世界服务器合成表怎么调 网络安全法与生活息息相关的规定 为什么原神服务器爆满 组态软件算软件开发吗 改行学习手机软件开发 北理工数据库系统开发考试卷 上海烽火网络技术有限公司 tbc黑石山服务器战场 软件开发公司管理层人员简介 数据库技术管理数据的过程 中文数据库检索路径 潜渊症刷不出来服务器 建筑工程oa管控软件开发平台 网络安全非法借贷等安全文稿 静安区全过程网络技术服务哪家好 梅州app软件开发有哪些 快维网络技术 为什么要备份数据库
0