里氏替换原则
概念
using System;
namespace Enumeration {
enum E_EXAMPLE {
A, // 0 如果不声明值 则第一个值默认是0 下面依次累加
B, // 1
C, // 2
D = 100, // 如果在中途赋值 后面的值基于赋值后的值进行累加
E, // 101
F, // 102
}
class GameObject {
}
class Player : GameObject {
public void Attack () {
Console.WriteLine("player atk");
}
}
class Mosnster : GameObject {
public void Attack () {
Console.WriteLine("mosnster atk");
}
}
class Boss : GameObject {
public void Attack () {
Console.WriteLine("boss atk");
}
}
class Enumeration {
static void Main (string[] args) {
GameObject player = new Player();
GameObject monster = new Mosnster();
GameObject boss = new Boss();
GameObject[] objects = new GameObject[] { new Player(), new Mosnster { }, new Boss { } };
// is: 判断一个对象是否是指定类对象
// 返回: bool true false
if (player is Player) {
Console.WriteLine(1);
(player as Player).Attack();
} else {
Console.WriteLine(2);
}
// as : 将一个对象转换为指定类对象
// 返回: 指定类对象 失败时返回 null
Player p = monster as Player;
Console.WriteLine(p);
}
}
}