C#中类型的转换

发布时间:2024年01月14日

类型转换

什么是类型转换

类型转换 就是不同变量类型之间的相互转换

类型转换--隐式转换

隐式转换的基本规则--不同类型之间自动转换
大范围装小范围

知识点一 相同大类之间的转换

有符号 long-->int-->short-->sbyte

无符号 ulong-->uint-->ushort-->byte

浮点数 decimal ? ?double-->float

特殊 decimal这个类型 没有办法用隐式转换的形式 去存储 double和float

知识点二 ?不同大类之间的转换

无符号装有符号
有符号的变量 是不能够 隐式转换 无符号的

有符号装无符号
有符号变量 是可以 装 无符号变量的 前提是 范围一定要是涵盖的 存在隐式转换

浮点数装整数

整形转为浮点数 是存在隐式转换的

浮点数 是可以装载任何类型的 整数的

decimal 不能隐式存储 float和double
但是它可以隐式的存储整形

double-->float-->所有整形(无符号、有符号)
decimal-->所有整形(无符号、有符号)

整数装浮点数 整数不能隐式存储 浮点数 因为 整数 不能存小数

?特殊类型和其他类型之间

bool bool没有办法和其他类型 相互隐式转换

char char 没有办法隐式的存储 其他类型的变量

char类型 可以隐式的转换为 整数和浮点型
? ? ? ? ? ? ? ? 是将char转换为int
? ? ? ? ? ? ? ? char隐式转换成 数值类型是
? ? ? ? ? ? ? ? 对应的数字 其实是一 ASCII码
? ? ? ? ? ? ? ? 计算机里存储 2进制
? ? ? ? ? ? ? ? 字符 中文 英文 标点符号 在计算机中都是一个数字
? ? ? ? ? ? ? ? 一个字符 对应一个数字 ASCII码是一种对应关系

char c = 'A';

int i = c;

ConSole.WriteLine(i);

string 无法和其他类型进行隐式转换

总结 隐式转换 规则
? ? ? ? ? ? 高精度(大范围)装 低精度(小范围)
? ? ? ? ? ? double-->float-->整数(有符号、无符号)-->char
? ? ? ? ? ? decimal-->整数(有符号、无符号)-->char
? ? ? ? ? ? string 和bool 不参与隐式转换

类型转换--显示转换

知识点一 ?括号强转

作用 一般情况下 将高精度的类型强制转换为低精度
? ? ? ? ? ? 语法: 变量类型 变量名 = (变量类型)变量
? ? ? ? ? ? 注意: 精度问题 范围问题

括号强转 可能会出现范围问题 造成的异常

short s = 1;

int i = 2 ;

s = (short) i ;

在强转时 一定要注意范围 不然得到的结果 可能异常

浮点和整形 浮点数强转成整形时 会直接抛弃小数点后面的小数

char和数值类型
? ? ? ? ? ? int i2 = 'A';
? ? ? ? ? ? char c = (char)i2;
? ? ? ? ? ? Console.WriteLine(c);

bool和string 是不能够通过 括号强转的

知识点二? Parse法

作用 把字符串类型转换为对应的类型
语法:变量类型.Parse("字符串")
注意:字符串必须能够转换成对应类型 否则报错

有符号

int i4 = int.Parse("123");
Console.WriteLine(i4);

Console.WriteLine(sbyte.Parse("1"));
Console.WriteLine(long.Parse("123456"));

值的范围 必须是能够被变量存储的值 否则报错

无符号


? ? ? ? ? ? Console.WriteLine(byte.Parse("1"));
? ? ? ? ? ? Console.WriteLine(ushort.Parse("12"));
? ? ? ? ? ? Console.WriteLine(uint.Parse("123"));
? ? ? ? ? ? Console.WriteLine(ulong.Parse("1233445"));

浮点数


? ? ? ? ? ? float f3 = float.Parse("1.3");
? ? ? ? ? ? double d3 = double.Parse("1.222");

特殊类型


? ? ? ? ? ? bool b5 = bool.Parse("true");
? ? ? ? ? ? Console.WriteLine(b5);
? ? ? ? ? ? char c2 = char.Parse("4");
? ? ? ? ? ? Console.WriteLine(c2);

知识点三? Convert 法

作用 更准确的将 各类型之间进行相互转换
语法:Convert.To目标类型(变量或常量)
注意:填写的变量或常量必须正确 否则出错

转字符串 如果是把字符串转对应类型 那字符串一定要合法合规
?int a = Convert.ToInt32("12");
?Console.WriteLine(a);
精度比括号强转好一点 会四舍五入
?a = Convert.ToInt32(1.678f);
?Console.WriteLine(a);

把bool类型也可以转成 数值类型 true对应1 false对应0
? ? ? ? ? ? a = Convert.ToInt32(true);
? ? ? ? ? ? Console.WriteLine(a);
? ? ? ? ? ? a = Convert.ToInt32(false);
? ? ? ? ? ? Console.WriteLine(a);

?每一个类型都存在对应的 Convert中的方法
? ? ? ? ? ? sbyte sb5 = Convert.ToSByte("1");
? ? ? ? ? ? short s5 = Convert.ToInt16(1);
? ? ? ? ? ? int i5 = Convert.ToInt32("123");
? ? ? ? ? ? long l5 = Convert.ToInt64("1234");

? ? ? ? ? ? byte sb6 = Convert.ToByte("1");
? ? ? ? ? ? ushort s6 = Convert.ToUInt16(1);
? ? ? ? ? ? uint i6 = Convert.ToUInt32("123");
? ? ? ? ? ? ulong l6 = Convert.ToUInt64("1234");

? ? ? ? ? ? float f5 = Convert.ToSingle("134.3");
? ? ? ? ? ? double d5 = Convert.ToDouble("12.334");
? ? ? ? ? ? decimal de5 = Convert.ToDecimal("12.3456");

? ? ? ? ? ? bool bo5 = Convert.ToBoolean("true");
? ? ? ? ? ? char ch5 = Convert.ToChar('A');

? ? ? ? ? ? string str5 = Convert.ToString(1234);

知识点四? 其他类型转string

? ? ? ? ? ? 作用:拼接打印
? ? ? ? ? ? 语法:变量.ToString();

? ? ? ? ? ? string str6 = 1.ToString();
? ? ? ? ? ? str6 = true.ToString();
? ? ? ? ? ? str6 = 'A'.ToString();
? ? ? ? ? ? str6 = 1.2f.ToString();

? ? ? ? ? ? int aa = 1;
? ? ? ? ? ? str6 = aa.ToString();

当我们进行字符串拼接时 就自动会调用 tostring 转成string
? ? ? ? ? ? Console.WriteLine("1234" + 1 + true);

文章来源:https://blog.csdn.net/SunsetSunup/article/details/135583274
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。