1
using System;
2
using System.Collections.Generic;
3
using System.Linq;
4
using System.Text;
5
6
namespace TypeCast
7
{
8
internal class Employee
9
{
10
11
}
12
internal class Manager : Employee
13
{
14
15
}
16
class Program
17
{
18
static void Main(string[] args)
19
{
20
Manager m = new Manager();
21
Employee e = m as Employee;
22
if (e != null)
23
{
24
Console.WriteLine(e.GetType().ToString());
25
}
26
27
PromoteEmployee(m);
28
//the cast above no fails:Cause Manager is derived from Employee
29
30
31
Object o = new object();
32
Employee e1 = o as Employee;
33
if (e1 != null)
34
{
35
Console.WriteLine(e.GetType().ToString());
36
}
37
//the cast above fails:no exception is thrown,but e1 is set to null
38
39
PromoteEmployee(o);
40
//the cast above fails: exception is thrown
41
}
42
43
public static void PromoteEmployee(Object o)
44
{
45
Employee e = (Employee)o;
46
Console.WriteLine(e.GetType().ToString());
47
}
48
}
49

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

注意:用As 类型转换操作不会抛出异常.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端