今天写了个继承,结果老提示这个错误,萌新的基础很不牢固,Mark一下吧
public TeachManager(string name, string phone, string email) : base(name, phone, email)
父类有了带参数的构造函数,子类的构造函数可以不和父类的构造函数一样,但是,如果你的父类定义了带参数的构造函数同时没有无参重载的情况下,那么在子类中,你必须对父类的带参数的构造进行赋值,也就是实参!在你这个里面
class TeachManager:Teach{ public TeachManager() :base("无","无","无") { } }
如果父类有无参的构造函数重载 就可以不用传递实参
class A { public A() { } public A(string a) { } } class B : A { public B() { } } //或者 class A { } class B : A { public B() { } }
都是可以的
public TeachManager(string name,string phone,string email) :base(name,phone,email) //可以理解为base就是调用父类构造函数的简写,便于传递参数 { }
相当于
public TeachManager(string name,string phone,string email) { Teach T=new Teach(name,phone,email) }
只是一个参数的传递,赋值的地方在Teach中
1 | 原因的是子类在实例化时,会调用父类的构造方法。父类有一个默认的构造方法无参构造方法,重写了父类的构造方法会覆盖掉默认的构造方法。调用的是需要参数的构造方法,需要传值给它.使用 base 关键字 |
我的案例
父类
public partial class BaseService<Entity, TKey> : IBaseService<Entity, TKey> where Entity : class { protected readonly IBaseRepository<Entity, TKey> _repository; public BaseService(IBaseRepository<Entity, TKey> repository)//继承类中用Base()传递参数 { _repository = repository; }
//.......... }
子类
public partial class zgdmbService: BaseService<zgdmb, string>, IzgdmbService { //private readonly IzgdmbRepository _repository;//在父类中定义了 public zgdmbService(IzgdmbRepository repository):base(repository)//base是给父类构造函数传递参数 { //_repository = repository; } //...... }
来自:https://iask.sina.com.cn/b/1SV0KaKBkpip.html
https://blog.csdn.net/qq_38061677/article/details/81021646
分类:
ASP.NET Core MVC
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统