1.显示转换:大的数值向小的转换
2.隐式转换:小的数值向大的转换
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
int i = 10;//隐式转换(小的数值范围向大的转换)
long l = i;//隐式转换(小的数值范围向大的转换)
C1 c1 = new C2();//隐式转换(小的数值范围向大的转换)
//显示转换(通常是大的数值范围向小的转换)
double d = 10.05;
int iFromD = (int)d;
C1 c11 = new C1();
//C2 c2 = (C2)c11;//会报错无法强制转换
try
{
C2 c2 = (C2)c11;
}
catch (Exception e){
Console.WriteLine(e.Message);
}
//显示转换尾
Console.WriteLine(c11 is C1);//是否为C1类型
Console.WriteLine(c11 is C2);//是否为C2类型
C2 c22 = c11 as C2;//把c11转换为C2类型 发现无法转换 返回null //as只能用于引用类型和非空类型
Console.WriteLine(c22 == null);
string sFormI = i.ToString();//ToString继承于Object几类,所有类型都有此方法
int iFromS = Convert.ToInt32("100");//字符串转int 仅限数字 否则报错
int iFromS2 = Int32.Parse("100"); //字符串转int 仅限数字 否则报错
int iFrom3;
bool succeed = Int32.TryParse("2344",out iFrom3);//试着去转换,有返回值如果非数字字符串转换会返回0
Console.WriteLine(iFrom3);
int? iNull = null; //可空类型
Console.ReadLine();
}
}
class C1 { }//隐式转换(小的数值范围向大的转换)
class C2 : C1 { }//隐式转换(小的数值范围向大的转换)
}