类型的转换
C#中类型转换(显隐)的机制分为两种:
一、隐式转换(implicit conversions)
二、显式转换(explict conversions)
隐式转换不需要指明欲转变的类型;
显式转换明确地使用转换运算符(cast)指定要转换成哪一种类型。
C#允许程序员如果对于溢出进行处理
checked:检查是否出现溢出
unchecked:不检查是否出现溢出
例如:
int a;
long b=200000000000;
try
{
a=checked((int)b);
//也可使用checked语句,而非checked操作符
//checked
//{
// (int)b;
//这里可以对多个语句进行检查是否溢出
//}
}
catch(System.OverflowException)
{
MseeageBox.Show("发生了溢出!");
}
checked和unchecked的使用准则
一、写代码时,将可能发生非预期溢出的代码放到一个checked块中
二,写代码时,将允许发生溢出的代码显式地放到一个unchecked块中。
C#中类型转换(值类型与引用类型)
一、值类型的转换
二、引用类型的转换
开发人员经常需要将一个对象从一种类型转换成他的类型。CLR允许将一个对象强制转换成它的类型或者它的任何基类型。
引用类型转换例子(包含is和as操作符的使用):
class Fruit
{
}
class Apple:Fruit
{
protect int i=1;
}
class Conversions
{
static void Main()
{
Fruit f=new Apple();
Apple a;
//强制转换
①a=(Apple)f;
//在c#语言中进行强制类型转换的另一种方式是使用is操作符,
//is操作符检查一个对象是否兼容于指定的类型,并返回一个boolean值。
//is操作符永远不会抛出异常。
②if(f is Apple)
{
Apple a=(Apple)f;
Console.Write(a.i);
}
//也可以用as实现
③a=f as apple
if(a!=null)
{
Console.Write(a.i);
}
//判断f是否兼容apple,若f兼容而将其类型转换为apple并赋值给a,否则将返回null
}
}

图片来源:陈广C#视频
浙公网安备 33010602011771号