类型

  • 隐式类型转换 - 这些转换是 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();
}
}

}

C#类型转换略提_强制转换

(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();
}
}

}

C#类型转换略提_字符串_02

C#类型转换略提_类型转换_03