C#的类型安全
时间:2014-08-31 11:42:51
收藏:0
阅读:193
类型安全应该算是CLR最重要的特性之一了,在运行时,CLR总是知道一个对象的类型。在C#中可以调用GetType()来返回调用对象的类型,并且由于GetType()继承于System.Object对象,并且为非虚的方法,所以一个类型不可能通过重写此方法而伪装成另一种类型。
由于在开发的过程中,经常会需要将一个对象从一种类型转换为其他的类型,所以CLR允许将一个对象强制转换成它本身所引用的类型或派生其的基类型。一个对象向其父类的转换CLR认为是一种安全的隐式转换,不需要任何特殊的然而需要将一个对象转换为其派生类型时,则需要进行显示的转换,因为这样的转换可能在运行时失败。
下面来看一个例子:

1

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


1 public class Person
2 {
3 public void Eat()
4 {
5 Console.WriteLine("吃饭");
6 }
7 public virtual void Work()
8 {
9 Console.WriteLine("工作");
10 }
11 }
12 public class Teacher : Person
13 {
14 public override void Work()
15 {
16 Console.WriteLine("教书");
17 }
18 }
19 public class Student : Person
20 {
21 public override void Work()
22 {
23 Console.WriteLine("没有工作,需要上学");
24 }
25 }
原文:http://www.cnblogs.com/zuking/p/3947401.html
评论(0)