基类和派生类之间如何使用as转换
时间: 2024-09-18 12:13:03 浏览: 33
浅析C#数据类型转换的几种形式
在 C# 中,基类(Base Class)和派生类(Derived Class)之间的 `as` 关键字用于安全地向下转型,即尝试将一个引用类型的对象转换为更具体的子类型。如果转换成功,返回的是指定类型的对象引用;否则,如果转换失败,则返回 `null`。
以下是一个简单的例子:
```csharp
// 定义一个基类 Animal
public class Animal {
public virtual void Speak() {
Console.WriteLine("Animal speaks");
}
}
// 派生类 Dog,继承自 Animal 并重写 Speak 方法
public class Dog : Animal {
public override void Speak() {
Console.WriteLine("Dog barks");
}
}
// 使用 as 转换
Animal animal = new Dog(); // 创建一个 Dog 对象赋值给 Animal 类型的变量
Dog dog = animal as Dog; // 尝试将 Animal 类型转换为 Dog 类型
if (dog != null) {
dog.Speak(); // 如果转换成功,输出 "Dog barks"
} else {
Console.WriteLine("Failed to cast to Dog"); // 转换失败时输出这个
}
```
阅读全文