C# 多态性 技术教程文章

C# 多态性【代码】

C# 多态性多态性常被视为自封装和继承之后,面向对象的编程的第三个支柱。 Polymorphism(多态性)是一个希腊词,指“多种形态”,多态:一个接口多个功能。静态多态性:编译时发生函数响应(调用);动态多态性:运行时发生函数响应。静态绑定(早期绑定):编译时函数和对象的连接机制。 两种技术实现静态多态性:函数重载/运算符重载。函数重载:在同一范围内对相同函数名有多个定义,可以是参数类型或参数个数的不同,但不许只...

C#多态性错误:由于其保护级别而无法访问【代码】

我正在尝试一个多态性示例,但我的代码中出现以下错误:public class CPolygon {CPolygon() {} public int width {get; set;} public int height {get; set;} public virtual int area(){ return 0; } }class CRectangle: CPolygon { public CRectangle() {} //'Lista.CPolygon.CPolygon()' is inaccessible due to its protection levelpublic override int area (){ return (width * height); } }class CTriangle: CPol...

c# – 与泛型的多态性 – 奇怪的行为【代码】

可插拔框架 想象一个简单的可插拔系统,使用继承多态非常简单: >我们有一个图形渲染系统>有不同类型的图形形状(单色,彩色等)需要渲染>渲染由特定于数据的插件完成,例如, ColorRenderer将渲染ColorShape.>每个插件都实现了IRenderer,因此它们都可以存储在IRenderer []中.>启动时,IRenderer []会填充一系列特定的渲染器>当接收到新形状的数据时,基于形状的类型从阵列中选择插件.>然后通过调用其Render方法调用插件,将形状作为其基本类...

C#中的接口多态性【代码】

我有这样的代码:public interface INode {INode Parent { get; set; }// ...... }public interface ISpecificNode : INode {new ISpecificNode Parent { get; set; }// ...... }public class SpecificNode : ISpecificNode {ISpecificNode Parent { get; set; }// ...... }此代码提供编译错误,因为未实现INode.Parent.但是,我不需要重复的父属性.我该如何解决这个问题?解决方法:我想你正在寻找这样的东西:public interface INod...

C#多态性问题【代码】

我有一个名为:A的BL类,名为DTO的DTO类.现在假设我想在我的DTO中添加更多属性.所以我从现有的DTO中派生出一个新的DTO类,并为它添加属性.下面是代码:namespace TestConsole {class test{static void Main(string[] args){B b = new B();b.D.ID = 1;b.D.Name = "4";MyBLMethod(b);}static void MyBLMethod(A b){MyDALMethod(b.D);}static void MyDALMethod(DTO dto){int i = dto.ID;string name = ((MyDTO)dto).Name;//I could not ...

C#通用方法/多态性【代码】

我有以下用于关闭流的代码.void CloseStream(Stream s) {if (s != null)s.Close(); }void CloseStream(HttpWebResponse s) {if (s != null)s.Close(); }void CloseStream(StreamReader s) {if (s != null)s.Close(); }代码完美无缺,但我想重构3种方法,如果可能的话.理想情况下,该方法看起来像这样:void CloseStream(Object obj) {obj.Close(); }但是我不能做obj.Close()因为Object类没有实现这样的方法.所以我想知道你们中是否有人...

C#接口,多态性和代理【代码】

当我结合接口和多态时,我搞得一团糟. 说我有以下界面:public Interface CanSayHello {String SayHello(); }以下课程:public Class Person : CanSayHello {public String SayHello() { return "Hey, I'm a person just saying hello to you";} }最后是重要的班级:public Class PoshPerson: Person {public String SayHello() { return "Hey, I'm too posh to say hello to you";} }我的第一个问题是以下代码会收集PoshClass或Per...

c# – MVVM – 具有多态性的集合【代码】

我试图在ListBox中公开两个派生类型:OutFlight和InFlight都派生自Flight,它是一个抽象类型. MVVM说我必须为ListBox的绑定模型设置ViewModel.对于一种类型的曝光来说,这不是什么大问题,但我的列表框包含两种派生类型,我正在寻找最好的MVVM方法.这是否意味着我必须为每个派生类型设置继承的ViewModel?我已经读过某处ViewModel继承不被推荐……我确信这是一个非常常见的情况解决方法:您可以创建一个封装OutFlight和InFlight实体的通...

雷林鹏分享:C# 多态性

C# 多态性多态性意味着有多重形式。在面向对象编程范式中,多态性往往表现为"一个接口,多个功能"。多态性可以是静态的或动态的。在静态多态性中,函数的响应是在编译时发生的。在动态多态性中,函数的响应是在运行时发生的。静态多态性在编译时,函数和对象的连接机制被称为早期绑定,也被称为静态绑定。C# 提供了两种技术来实现静态多态性。分别为:函数重载运算符重载运算符重载将在下一章节讨论,接下来我们将讨论函数重载。函...