草庐IT

Inheritance

全部标签

C# 继承 : implements + extends

是否可以在C#中做类似的事情:publicclassMyClassimplementsClassAextendsClassB{}我需要这个是因为:我有两个类,其中一个是Interface,我将在我的类中实现它,但我也想使用另一个类的方法,它可以做一些事情我想在类里面使用它。 最佳答案 C#不支持multipleinheritance.您可以从一个类派生并使用接口(interface)来满足您的其他需求。语法:classMyClass:Foo,IFoo,IBar{}interfaceIFoo{}interfaceIBar{}class

c# - Specflow测试步骤继承导致 "Ambiguous step definitions"

我想要具有以下测试步骤类结构:[Binding]publicclassBaseStep{[Given(@"thereisacustomer")]publicvoidGivenThereIsACustomer(Tabletable){HandleCustomer(table);}protectedvirtualvoidHandleCustomer(Tabletable){}}[Binding]publicclassFeatureOneStep:BaseStep{protectedoverridevoidHandleCustomer(Tabletable){//featureoneacti

C# 泛型 - 如何返回特定类型?

也许我做错了。我有一堆派生自“模型”类的类,这是一个具有大量通用属性和方法的基类。我希望它们都实现一组功能:publicabstractvoidCreate();publicabstractTRead(GuidID);//然后我在像“Appointment”这样的子类中实现它:publicoverrideTRead(GuidID){varappt=db.Appointments.First(a=>a.AppointmentID.Equals(ID));varappointment=newAppointment(){DateEnd=appt.dateEnd.GetValueOrDefau

C#多重继承

目前我正在使用CodeFirstApproach学习C#和ASP.NETMVC4。我是VisualBasic开发人员,现在我想启动C#。而且,现在我遇到了必须管理多重继承的情况。但是,我认为Class是不可能的。那么,我应该如何管理我拥有的这些类(class)://IhavetheFollowingPersonClasswhichHoldCommonProperties//andaTypeofPersone.g:Student,Faculty,AdministrativepublicclassPerson{publicintId{get;set;}publicstringFirstNa

c# - 只能在 C# 中的程序集内继承

在C#中,有没有办法指定一个类仅由同一程序集中存在的类继承,而对于其他程序集,其行为应类似于公共(public)密封类型。 最佳答案 我认为EricLippert在这里得到了定义引语:Preventingthird-partyderivationpartonePreventingthird-partyderivationparttwo 关于c#-只能在C#中的程序集内继承,我们在StackOverflow上找到一个类似的问题: https://stackove

c# - 为什么要在 C# 中显式重写虚方法?

为什么要在C#中显式重写虚方法? 最佳答案 通过将方法声明为虚拟,您表明了您的意图可以在派生类中重写该方法。通过将您的实现方法声明为override,您表明您的意图您正在覆盖虚拟方法。通过要求使用override关键字来覆盖虚拟方法,语言的设计者通过要求您陈述您的意图来鼓励清晰度。 关于c#-为什么要在C#中显式重写虚方法?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3248

c# - 如果我的类不继承任何东西,为什么我能够覆盖 Equals 方法?

我有点困惑下面的代码是如何工作的publicclassDefaultClass{publicoverrideboolEquals(objectobj){returnbase.Equals(obj);}}我的问题是:我没有继承任何类,但我如何仍然能够覆盖Equals方法。这段代码在VS2010中得到了完美的编译。知道这是如何工作的吗? 最佳答案 因为您的DefaultClass“继承”自object默认情况下。您正在覆盖object.Equals现在。不过我理解其中的困惑。MSDN说像这样的类不继承任何其他类,但它继承了(object

c# - C# 中的继承和析构函数

根据this,它声明析构函数不能被继承或重载。在我的例子中,对于所有子类,析构函数将是相同的。这几乎是在告诉我必须在每个子类中定义相同的析构函数吗?我无法在基类中声明析构函数并处理销毁?假设我有这样的东西:classA{~A(){SomethingA();}}classB:A{}Bb=newB();当B被销毁时,它的析构函数不会被调用吗? 最佳答案 Accordingtothis,itstatesthatDestructorscannotbeinheritedoroverloaded.正确。析构函数不是可继承的成员,也不是虚拟的,因

c# - 多态基础

我现在正在研究继承和多态性,我遇到了这样一个概念,即编译器将评估(使用反射?)什么类型的对象存储在基类型引用中,以便决定在什么方法上运行调用具有覆盖的方法。例如:classShape{publicvirtualvoidDraw(){Console.WriteLine("Drawingshape...");}}classCircle:Shape{publicoverridevoidDraw(){Console.WriteLine("Drawingcircle...");}}staticvoidMain(){ShapetheShape=newCircle();theShape.Draw()

c# - 使用继承

我目前正在开发一款在一个场景中使用了继承的应用程序。但是现在我有一项任务需要从我的模型构建器返回多个View模型。我将在下面描述:在我的Controller方法中,我们保持轻便并使用了模型构建器。publicViewResultSummary(ReportArgsargs){returnView(args);}然后这会触发从基类继承的构建器方法。publicclassSomeBuilder:NewBuilder{}然后NewBuilder有如下实现:publicclassNewBuilder:ReportBuilderwhereTModel:SomeReportVM,new()wher