c#之有参和无参构造函数,扩展方法
例如在程序中创建 Parent类和Test类,在Test有三个构造函数,parent类继承Test类,那么我们可以在Test类自身中添加 扩展 方法吗?
答案:是不可以的。因为扩展方法必须是静态的,且静态方法是不存在构造函数的。
先看一段代码:
public class Test { public Test() { Console.WriteLine("这是无参的构造函数"); } public Test(string name) { Console.WriteLine(string.Format("这是有参的构造函数,想知道name:{0}",name)); } public Test(Test test, int age) { Console.WriteLine("这是含有Test类型的函数"); } } public class Parent:Test { public Parent() : base(new Test(), 11) { Console.WriteLine("调用Test中的有参构造函数"); } } class Program { static void Main(string[] args) { Parent parent = new Parent(); //在调用的时候时候,是先调用了Test中的无参构造函数,接着调用了有Test类行的有参构造函数 } }
还有一个this()的用法:
public class aaa{ public aaa(int v){} public aaa() :this(11) {} }
那么如何实现扩展呢?
public static class HasKz { public static void getName(this HasKz kz, int age) { //报错,提示静态类不能作为参数 } }
//得到的结论,自身类中不能实现扩展方法
//同时扩展方法是在静态中定义的
例如在parent正确的定义//public static void GetName(this Test t,int name)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~