Tag: 多态

如何使用多态+重载来改进这种方法以减少IS(类型检查)?

例如 BaseClass MyBase() { public int Add(BaseClass next) { if (this is InheritedA && next is InheritedA) return 1; else if (this is InheritedA && next is InheritedB) return 2; else if (this is InheritedB && next is InheritedA) return 3; else if (this is InheritedB && next is InheritedB) return 4; } } 其中InheritedA和InheritedB是其inheritance的类。 […]

C#中具有相同名称和签名但返回类型不同的方法

我接受了一次采访,询问了以下情况: 问题:具有相同名称和签名但返回类型不同的方法。 是否有可能,他问我这种类型是什么。 有人可以告诉我以下内容: 在任何情况下都是可能的事情(比如基类中的一个和至少派生类中的一个?)如果是这样的类型是什么? 像编译或运行时多态? 在编译时多态,如果返回类型的方法也与签名不同怎么办? 但只有function名称相同。 是编译时多态吗? 在覆盖中,如果我有不同的返回类型但方法名称和签名相同怎么办? 可能吗 ? (他问我这个问题,我回答错误:()请帮帮我。 谢谢

C#Generics是如何实现的?

我曾经认为C#中的Generics是这样实现的,当使用新的generics类型时,在运行时或编译时生成一个新的类/方法/你有什么,类似于C ++模板(我从来没有真正调查,我很可能是错的,我很乐意接受纠正。 但在我的编码中,我提出了一个确切的反例: static class Program { static void Main() { Test testVar = new Test(); GenericTest genericTest = new GenericTest(); int gen = genericTest.Get(testVar); RegularTest regTest = new RegularTest(); int reg = regTest.Get(testVar); if (gen == ((object)testVar).GetHashCode()) { Console.WriteLine(“Got Object’s hashcode from GenericTest!”); } if (reg == testVar.GetHashCode()) { Console.WriteLine(“Got Test’s hashcode from RegularTest!”); […]

使用有效示例隐藏在c#中的方法。 为什么在框架中实现? 什么是真实世界的优势?

任何人都可以用一个有效的例子解释隐藏在C#中的方法的实际用法吗? 如果使用派生类中的new关键字定义方法,则无法覆盖该方法。 然后它与创建一个具有不同名称的新方法(除了在基类中提到的方法之外)相同。 有没有具体的理由使用new关键字?