是否可以在不使用“this is”的情况下重新编写此类

问题描述

我查看了这段代码,我想重构保持相同的逻辑而不使用这是

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);