C#构造函数中:this()的作用
通俗来说,可以说是构造函数的继承
(1) :this()用来继承无参时的构造函数,例如下面代码
static void Main(string[] args) { AA aA = new AA("c","d"); Console.WriteLine(aA.aa); Console.WriteLine(aA.bb); Console.WriteLine(aA.cc); Console.WriteLine(aA.dd); Console.WriteLine(aA.ee); Console.ReadKey(); } } class AA { public string aa="aa 未初始化"; public string bb= "bb 未初始化"; public string cc= "cc未初始化"; public string dd= "dd 未初始化"; public string ee= "ee 未初始化"; public AA(string c,string d):this() { this.cc = c; this.dd = d; } public AA() { this.aa = "a"; this.bb = "b"; } }
类AA的构造过程为,先构造无参的AA(),然后再对应参数的构造函数,显示结果为
(2) :this(para)
如果我们要继承有参的构造函数,则需要构造函数签名的时候就初始化
如下面代码
class Program { static void Main(string[] args) { AA aA = new AA("c","d"); Console.WriteLine(aA.aa); Console.WriteLine(aA.bb); Console.WriteLine(aA.cc); Console.WriteLine(aA.dd); Console.WriteLine(aA.ee); Console.ReadKey(); } } class AA { public string aa="aa 未初始化"; public string bb= "bb 未初始化"; public string cc= "cc未初始化"; public string dd= "dd 未初始化"; public string ee= "ee 未初始化"; public AA(string c,string d):this("e") //此处初始化了一个参数 { this.cc = c; this.dd = d; } public AA() { this.aa = "a"; this.bb = "b"; } //此处是新的带一个参数的构造函数 public AA(string e) { this.ee = e; } }
此代码会优先构造AA(string e)的构造函数,然后继续构造对应的构造函数
运行结果为
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述