sunny123456

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  1796 随笔 :: 22 文章 :: 24 评论 :: 226万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

c#之有参和无参构造函数,扩展方法
https://www.cnblogs.com/zmztya/p/6843205.html

例如在程序中创建 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 </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> Parent();
       //在调用的时候时候,是先调用了Test中的无参构造函数,接着调用了有Test类行的有参构造函数
    }
}</span></pre>
复制代码
复制代码

还有一个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)
复制代码
复制代码

 

posted on   sunny123456  阅读(460)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示