C#中类型的转换

类型转换

什么是类型转换

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

类型转换--隐式转换

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

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

有符号 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);

你可能感兴趣的:(c#,开发语言)