问题描述
我查看了这段代码,我想重构保持相同的逻辑而不使用这是
class Animal
{
public void Verify()
{
if (this is Animal) {
Console.WriteLine("Animal");
} else if (this is Person) {
Console.WriteLine("Person");
} else if (this is Home) {
Console.WriteLine("Home");
} else {
Console.WriteLine("*******");
}
}
}
class Person
...
class Home
...
解决方法
它可能太相似了,但是 switch (this)
使用“模式匹配”,即 case Person:
可能是一种选择,但是 IMO 在这里更好的方法是多态性,所以:有一个 {{1} } 或 virtual
方法在基类中,而 abstract
它适合在每个子类中。现在多态为你处理选择。
如果你不介意稍微反思一下:
Console.WriteLine(this.GetType().Name);