首页 > 作文

C#数据类型转换(显式转型、隐式转型、强制转型)

更新时间:2023-04-04 15:34:52 阅读: 评论:0

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].par()

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

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

int.par()

float.par()

请看例子

string str = "666";long i = int.par(str);console.writeline($"{i},{i.gettype()}");console.readkey();

(图如)

注意,

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

par() 是为符合数字格式的 string新晴野望 类型进行转换!

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

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

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

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

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

第三,[type].trypar()

格式如下

int.trypar()float.trypar()

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

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

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

例子

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

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

第四,system.convert

方法例子

system.convert.tosingle();

system.convert.toint32();

system.convert.todouble();

system.convert 允许将一种类型转为另一种类型。

常见 类型列表: char、s九月九日忆山东兄第byte、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.tobool新闻的作文ean(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 sys期末复习方法tem;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 =don是什么意思 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#数据类型转换(显式转型、隐式转型、强制转型)的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持www.887551.com。

本文发布于:2023-04-04 15:34:51,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/56ed91dfbe9d4de73bbf930c081f369a.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:C#数据类型转换(显式转型、隐式转型、强制转型).doc

本文 PDF 下载地址:C#数据类型转换(显式转型、隐式转型、强制转型).pdf

标签:类型   字符串   精确度   例子
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图