C#學習第七天
阿新 • • 發佈:2019-02-16
C#中的params引數(引數陣列):
1、params引數是陣列。呼叫方式可以陣列方式,也可以單個元素方式。
static void test(String name,params int[] scores) { StringBuilder sb = new StringBuilder(); foreach(int i in scores) { sb.AppendFormat("{0}-",i); } Console.WriteLine("{0}你好,你的Scores is {1}",name,sb); }
test("劉德華",new int[]{1,2,3});//以陣列方式呼叫
test("周星馳",80,90,100,98);//單個元素方式呼叫
test("梁朝偉");//無引數方式呼叫
2、params引數必須是最後一個引數。
3、params引數不能是ref或out引數。
4、params引數不是方法過載的簽名特性。
5、當呼叫方法而沒有傳遞params引數時,編譯器實際傳遞一個空陣列(長度為0的陣列)。
{
分析:當以單個元素傳遞params引數時,實際編譯器自動生成一個數組:該陣列長度等於這些引數元素個數,元素就是這些單個引數。然後吧該陣列傳遞到方法中。
例如:test("劉德華",10,5);系統實際執行如下操作:
int[] temp = new int[2]; temp[0] = 10; temp[1] = 5 ; test("劉德華",temp).
}
擴充套件方法:
//擴充套件方法 /* * 1、擴充套件方法必須放在靜態類中。 * 2、擴充套件方法必須是靜態的。(靜態類中不能存在例項成員) * 3、要擴充套件的型別必須是第一個引數,且以this為字首(擴充套件類例項),後面可以有普通引數 * 4、使用擴充套件方法時,必須把擴充套件方法所在的靜態類加入使用的名稱空間 * 5、擴充套件型別的子類也自動具有同樣的擴充套件方法(繼承) */ static class Util { public static int GetPhqInt(this Animal animal) { return animal.GetHashCode() + 10000000; } internal static void PrintClassName(this Animal animal) { Console.WriteLine(animal.getClassName()); } internal static void Add100(this int num) { Console.WriteLine("{{加100之後的資料:{0}}}",num+100); } }
呼叫:
animal.PrintClassName();
pig.PrintClassName();
Console.WriteLine(dog.GetPhqInt());
int a = 8;
a.Add100();