分类
按照数据复杂程度
按照数据存储
类型转换
隐式转换
隐式转换无法完成由精度高的数据类型向精度低的数据类型转换
显式转换
又称为强制类型转换,显示转换不一定总是成功,且转换过程中可能出现数据丢失
int num = 666;
float result = (float)num;
Parse
一般用来(字符串)=>(数字)
可以将特定格式的字符串转换成指定类型的数据,一般用来转换成数值
如果字符串的格式无效,转换失败,Parse会引发异常
int.Parse(str);
try
{
char.Parse(str);
}
catch (Exception ex)
{
Console.WriteLine("转换格式失败!");
}
TryParse
一般用来(字符串)=>(数字)
类似Parse方法,转换成功返回true,并以out参数的形式返回转换后的数字;转换失败返回false,不会引发异常。
Console.WriteLine($"{int.TryParse(str, out int value)} {value}");
Console.WriteLine($"{char.TryParse(str, out char valueStr)} {valueStr}");
Convert
一般用来(字符串)=>(数字)
如果字符串的格式无效,转换失败,Parse会引发异常.在其内部调用的是Parse方法
下表列出了 Convert 类中可用于将字符串转换为数字的一些方法。
数值类型 | 方法 |
decimal | ToDecimal(String) |
float | ToSingle(String) |
double | ToDouble(String) |
short | ToInt16(String) |
int | ToInt32(String) |
long | ToInt64(String) |
ushort | ToUInt16(String) |
uint | ToUInt32(String) |
ulong | ToUInt64(String) |
Convert.ToInt32(str);
try
{
Convert.ToChar(str);
}
catch(Exception ex)
{
Console.WriteLine("转换格式失败!");
}
ToString
一般用来(数字)=>(字符串)
也可用来实现保留小数点后几位的功能
is和as
is
用来判断对象是否和指定类型兼容
如果兼容返回true;不兼容返回false,通常is会使用在if语句中
Apple apple = new Apple();//子类
Fruit fruit = new Fruit();//父类
if (apple is Fruit)
{
Console.WriteLine("兼容");
}
else
{
Console.WriteLine("不兼容");
}
as
在判断兼容性的同时,进行类型转换
如果兼容的,则返回类型转换后的对象,如果不兼容则返回null
Apple apple = new Apple();//子类
Fruit fruit = new Fruit();//父类
var obj = apple as Fruit;
Console.WriteLine(obj == null);
子类可以兼容父类(子类可以替代父类)
父类不可以兼容子类(父类不能替代子类)
值类型补充
整数类型
类型 | 描述 | 范围 | 默认值 |
sbyte | 一个字节的有符号整数 | -128 到 127 | 0 |
byte | 一个字节的无符号整数 | 0 到 255 | 0 |
short | 两个字节的有符号整数 | -32,768 到 32,767 | 0 |
ushort | 两个字节的无符号整数 | 0 到 65,535 | 0 |
int | 四个字节的有符号整数 | -2,147,483,648 到 2,147,483,647 | 0 |
uint | 四个字节的无符号整数 | 0 到 4,294,967,295 | 0 |
long | 八个字节的有符号整数 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 | 0L |
ulong | 八个字节的无符号整数 | 0 到 18,446,744,073,709,551,615 | 0 |
实数类型
包括浮点型和小数型,小数型取值范围比浮点型小,但精度更高
类型 | 描述 | 范围 | 默认值 |
float | 32 位单精度浮点型 ,占用4个字节 | -3.4 x 1038 到 + 3.4 x 1038 | 0.0F |
double | 64 位双精度浮点型,占用8个字节 | (+/-)5.0 x 10-324 到 (+/-)1.7 x 10308 | 0.0D |
decimal | 128 位精确的十进制值,28-29 有效位数,更高精度,占用12个字节 | (-7.9 x 1028 到 7.9 x 1028) / 100 到 28 | 0.0M |
引用类型补充
引用类型还包含集合
其他
如需得到一个类型或一个变量在特定平台上的准确尺寸,可以使用 sizeof 方法。
sizeof(int)