相关疑难解决方法(0)

C# - 关键字用法虚拟+覆盖与新

在基类型" virtual"中声明方法然后使用" override"关键字在子类型中覆盖它而不是new在声明子类型中的匹配方法时简单地使用" "关键字之间有什么区别?

c# syntax overriding method-hiding member-hiding

201
推荐指数
6
解决办法
6万
查看次数

为什么在派生类中调用方法会调用基类方法?

考虑以下代码:

class Program
{
    static void Main(string[] args)
    {
        Person person = new Teacher();
        person.ShowInfo();
        Console.ReadLine();
    }
}

public class Person
{
    public void ShowInfo()
    {
        Console.WriteLine("I am Person");
    }
}
public class Teacher : Person
{
    public new void ShowInfo()
    {
        Console.WriteLine("I am Teacher");
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,输​​出以下内容:

我是人

但是,你可以看到它是一个实例Teacher,而不是Person.代码为什么这样做?

c# class derived-class

144
推荐指数
4
解决办法
7万
查看次数

C#中的阴影和覆盖之间的区别?

阴影覆盖 C#中的方法有什么区别?

c#

95
推荐指数
4
解决办法
8万
查看次数

为什么这个多态C#代码会打印它的作用?

我最近得到了以下代码作为一种帮助理解PolymorphismInheritance在OOP - C#中的谜题.

// No compiling!
public class A
{
     public virtual string GetName()
     {
          return "A";
     }
 }

 public class B:A
 {
     public override string GetName()
     {
         return "B";
     }
 }

 public class C:B
 {
     public new string GetName()
     {
         return "C";
     }
 }

 void Main()
 {
     A instance = new C();
     Console.WriteLine(instance.GetName());
 }
 // No compiling!
Run Code Online (Sandbox Code Playgroud)

现在,在与提出拼图的其他开发者进行了长时间的长时间聊天后,我知道输出是什么,但我不会为你破坏它.我真正遇到的唯一问题是我们如何得到输出,代码如何逐步通过,继承什么等等.

我认为C会返回,因为它似乎是定义的类.然后我通过我的脑袋了解是否B会因为C继承而返回B- 但B也继承A(这是我困惑的地方!).


题:

任何人都可以解释多态性和继承如何在检索输出中发挥作用,最终显示在屏幕上?

.net c# oop polymorphism inheritance

68
推荐指数
2
解决办法
6931
查看次数

超载,覆盖和隐藏?

任何人都可以解释什么是重载,覆盖和隐藏.Net?

谢谢

.net oop

5
推荐指数
3
解决办法
6870
查看次数