C#类型转换略提

类型

  • 隐式类型转换 - 这些转换是 C# 默认的以安全方式进行的转换, 不会导致数据丢失。例如,从小的整数类型转换为大的整数类型,从派生类转换为基类。
    把代码放入checked{}代码块内,默认行为从unchecked改成checked溢出等会报错。
    不同于C++,long/int等不能->bool类型
  • 显式类型转换 - 显式类型转换,即强制类型转换。显式转换需要强制转换运算符,而且强制转换会造成数据丢失。

String<–>数字类型的显示转换类型:

(1)System.Convert
例如System.Convert.ToDouble()
还有

1.ToBoolean
如果可能的话,把类型转换为布尔型。
2	ToByte
把类型转换为字节类型。
3	ToChar
如果可能的话,把类型转换为单个 Unicode 字符类型。
4	ToDateTime
把类型(整数或字符串类型)转换为 日期-时间 结构。

更多查看菜鸟编程
所有类型都支持ToString()方法,提供一个类型的字符串表示

int i = 97;
string s = i.ToString();
WriteLine(s);

(2)bool TryParse()
转换失败时,不会报错,返回false,例如double.TryParse()
TryParse()代替无效转型异常。

(3) string->int :
用int.Parse(string),不能直接(int)string.

int.Parse()是一种类容转换;表示将数字内容的字符串转为int类型。
如果字符串为空,则抛出ArgumentNullException异常;
如果字符串内容不是数字,则抛出FormatException异常;
如果字符串内容所表示数字超出int类型可表示的范围,则抛出OverflowException异常;

int.TryParse 与 int.Parse 又较为类似,但它不会产生异常,转换成功返回 true,转换失败返回 false。最后一个参数为输出值,如果转换失败,输出值为 0

注意事项:

(1) C# 中对 double 类型的数据取整

可以使用 convert.ToInt32() 方法,也可使用 int 强制转换为整数,使用 int 时并不存在四舍五入的情况,而是直接将后面的小数位数丢掉。

(2) 对 null 值的处理方法:

Convert.ToInt32(null) 会返回 0 而不会产生任何异常,但 int.Parse(null) 则会产生异常。

using System;

namespace ConsoleApp1
{    
    class Programe
    {
        static void Main(String[] ar)
        {
            string s = null;
            int i = Convert.ToInt32(s);
            Console.WriteLine(i);

            i = int.Parse(s);
            Console.WriteLine(i);
            Console.ReadLine();
        }
    }
    
}

在这里插入图片描述

(3)对数据进行四舍五入时候的区别

  • Convert.ToInt32(double value) 如果 value 为两个整数中间的数字,则返回二者中的偶数;即 3.5 转换为 4,4.5 转换为 4,而 5.5 转换为 6。不过 4.6 可以转换为 5,4.4 转换为 4 。
  • int.Parse(“4.5”) 直接报错:“输入字符串的格式不正确”。
  • int(4.6) = 4 Int 转化其他数值类型为 Int 时没有四舍五入,强制转换。
  • 对被转换类型的区别:
    int.Parse 是转换 String 为 int

Convert.ToInt32 是转换继承自 Object 的对象为 int 的(可以有很多其它类型的数据)。你得到一个 object 对象, 你想把它转换为 int, 用 int.Parse 就不可以, 要用 Convert.ToInt32。

案例:

using System;

namespace ConsoleApp1
{    
    class Programe
    {
        static void Main(String[] ar)
        {
            string s = "A";
            int i;

            int.TryParse(s, out i);
            Console.WriteLine(i);//输出0,下面的都是报错

            i=Convert.ToInt32(s);
            Console.WriteLine(i);

            i = int.Parse(s);
            Console.WriteLine(i);

            Console.ReadLine();
        }
    }
    
}

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

广大菜鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值