c#之有參和無參構造函數,擴展方法

例如在程序中建立 Parent類和Test類,在Test有三個構造函數,parent類繼承Test類,那麼咱們能夠在Test類自身中添加 擴展 方法嗎?函數

答案:是不能夠的。由於擴展方法必須是靜態的,且靜態方法是不存在構造函數的。this

先看一段代碼:spa

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()的用法:code

public class aaa{
      public aaa(int v){}
      public aaa() :this(11) {}   
}

那麼如何實現擴展呢?orm

public static class HasKz
    {
        public static void getName(this HasKz kz, int age)
        {
         //報錯,提示靜態類不能做爲參數
        }
   }//獲得的結論,自身類中不能實現擴展方法//同時擴展方法是在靜態中定義的例如在parent正確的定義//public static void GetName(this Test t,int name)
相關文章
相關標籤/搜索