为什么用as进行类型转换被那么推崇?
看了许多C#的书,都说用as运行符进行类型转换有多好,但我觉得catch也挺好的啊。以下两种方式到底谁好,好在哪呢?
// as的方式
Cow myCow = myAnimal as Cow;
if (myCow != null)
{
myCow.Milk();
}
else
{
Console.WriteLine("类型转换错误");
}
// try-catch的方式
try
{
Cow myCow = myAnimal as Cow;
myCow.Milk();
}
catch (Exception e)
{
Console.WriteLine("类型转换错误");
}
------解决方案--------------------首先,ls的说法是错误的。try catch根本不会“抛出异常”。
as 操作没有办法转换值类型。
因为 as 在转换失败的时候返回 null,值类型不能是 null。
关于 as 和强制类型转换更多的比较,推荐你看C#高效编程这本书。我想说的在这本书中都有。
------解决方案--------------------