Convert.ToInt32(); int.Parse() ; int.TryParse()三種方式。
public struct JG{ public string name; public int age;}static void Main(string[] strag){ JG jg=new JG(); jg.name=”張三”; jg.age=11;}
int[] nums = { 1, 2, 3, 5, 8, 2 }; // 冒泡排序第一個元素依次和后面的元素比較 //如果大于他就把值給他 for (int i = 0; i < nums.Length - 1; i++) { for (int j = 0; j < nums.Length - 1 - i; j++) { if (nums[j] < nums[j + 1]) { int temp = nums[j]; nums[j] = nums[j + 1]; nums[j + 1] = temp; } } }
注:多個參數時,params參數需要放在最后一個位置.
1 static void Main(string[] args) 2 { 3 //求方法的最大、最小、總和、平均值 4 int[] numbers = { 1, 2, 3, 4, 5, 6, 7 }; 5 6 int max = 0; 7 int min = 0; 8 int sum = 0; 9 int avg = 0;10 GetManMinSumAvg(numbers,out max,out min, out sum ,out avg);11 12 13 Console.WriteLine(max);14 Console.WriteLine(min);15 Console.WriteLine(sum);16 Console.WriteLine(avg);17 18 Console.ReadKey();19 }20 21 public static void GetManMinSumAvg(int[] nums, out int max, out int min, out int sum, out int avg)22 {23 int[] res = new int[4];24 //假設res[0]最大 1最小 2 總和 3平均25 max = nums[0];//Max26 min = nums[0];//MIn27 sum = 0;//28 for (int i = 0; i < nums.Length; i++)29 {30 if (nums[0] < nums[i])31 {32 max = nums[i];33 }34 if (nums[0] > nums[i])35 {36 min = nums[i];37 }38 sum += nums[i];39 }40 avg = sum / nums.Length;41 }
1 static void Main(string[] args) 2 { 3 int n1 = 10; 4 int n2 = 20; 5 //傳入參數前必須賦值 6 Ss(ref n1,ref n2); 7 Console.WriteLine(n1); 8 Console.WriteLine(n2); 9 Console.ReadKey();10 }11 12 public static void Ss(ref int n1,ref int n2)13 {14 n1 = n1 - n2;15 n2 = n1 + n2;16 n1 = n2 - n1;//調換兩個參數的值17 }
1 static void Main(string[] args) 2 { 3 int gg = Get(1, 2, 3, 4, 5, 5, 67, 2); 4 Console.WriteLine(gg); 5 Console.ReadKey(); 6 } 7 public static int Get(params int[] ss) 8 { 9 int sum = 0;10 for (int i = 0; i < ss.Length; i++)11 {12 sum += ss[i];13 }14 return sum;15 }
概念:指的是方法的名稱相同,但是參數不同。
1) 參數的個數相同,那么參數的類型就不能相同。
2) 參數的類型相同,那么參數的個數就不能相同。
方法自己調用自己。但是也得有一個條件讓他自己不在循環≠死循環。
注:每調一次遞歸函數,就相當于進入一個門。最后return 的時候會在一層一層的返回。
public static int i=0;
可以選擇將字段聲明為 static。 這使得調用方在任何時候都能使用字段,即使類沒有任何實例。
1.類概念:我們把這些具有相同屬性和相同方法的對象進行進一步的封裝,抽象出來。
類就是一個模子,確定了對象應該具有的屬性和方法。
對象是根據類創建出來的。
public class 類名
{
字段; 存儲數據。
屬性;
方法; 描述對象的行為。
}
類的實例化:寫好了類之后,我們需要創建這個類的對象,那么,我們管創建這個類的對象過程稱之為類的實例化。
this關鍵字:代表當前類的對象。
注:類是不占內存的,對象是占內存的。字段會有一個默認的初值,會在內存中開辟空間。
結構和類的區別:結構是面向過程的,類是面向對象的。關鍵字一個是class和struct。
結構不具備類(特征)的:封裝、繼承和多態。
屬性的作用就是保護字段、對字段的賦值和取值進行限定。
注:屬性的本質就是兩個方法。get,set方法。
.看有沒有被static標記
被static標記為靜態;
沒有static標記為非靜態;
1) 在非靜態類中,既可以有實例成員,也可以有靜態成員。
2) 在調用實例成員的時候,需要使用對象名.示例名。
再調用靜態成員的時候,需要使用類名.靜態成員名。
??偨Y:靜態成員必須使用類名去調用,而實例成員使用對象名調用。
靜態函數中,只能訪問靜態成員,不允許訪問實例成員。
實例函數中,既可以使用靜態成員,也可以使用實例成員。
使用:
1) 如果你想要類,當做一個工具類去使用,這個時候可以把類寫成靜態類。
2) 靜態類中在整個項目中資源共享。
作用:幫助我們初始化對象(給對象的每個屬性依次的賦值);
構造函數是一個特殊的方法。
方便我們快捷的給一個對象初始化。
new幫助我們做了3件事:
1)、在內存中開辟一塊空間
2)、在開辟空間中創建對象
3)、調用對象的構造函數進行初始化對象
這段代碼多次重復數賦值字段。構成了冗余
1.含義
1)代表當前類的對象。
2)在類中顯示的調用本類的構造函數 :this
1 public Person(string name, int ages, string gender, string linkway) 2 { 3 this.Name = name; 4 this.Ages = ages; 5 this.Gender = gender; 6 this.Linkway = linkway; 7 } 8 public Person(string name, int age):this(name,age,"","") 9 { 10 11 }
~類名()
{
//不用調用,自己執行。
}
概念:可以解決類的重名問題。可以看作類的文件夾。
區別:
1.內存中的分配的空間是不一樣的。
2.傳遞的方式也是不同的。(值傳遞和引用傳遞)
內存空間認為的分為5塊:
注:程序員常用的是:堆、棧、靜態存儲區域
值類型:int、double、struct、bool、char、decimal、enum
引用類型:引用類型:string 數組、自定義類、集合、object、接口
注:值類型在復制的時候,傳遞的是這個值得本身。
引用類型在復制的時候傳遞的時候是對對象的引用。
1.當你給一個字符串重新賦值后,老值并沒有銷毀,兒時重新開辟了一個空間存儲新值。棧的地址會得到更新。
當程序結束后,GC掃描整個內存,如果發現有的空間沒有指向,則立即把它銷毀。
StringBuilder 一般是沒有再新開空間。
封裝概念:把常用的東西封裝起來。
繼承概念:我們可能會在一些類中,寫一些重復的成員,我們可以將這些重復的成員單獨的封裝到一個類中,作為這些類的父類。
student、Teacher、 子類 派生類
Person 父類 基類
子類繼承了父類,繼承了父類的屬性和方法。私有字段不會繼承過來。不會繼承構造函數,但是會調用。
注:子類繼承了父類,先會去調用父類無參數的構造函數。
創建父類對象。讓子類可以使用父類中的成員。
父類中重寫了一個有參的構造函數,父類無參的構造函數就被干掉了。
解決辦法:
辦法1.在父類中重寫一個無參的構造函數。(不推薦)
辦法2.直接讓子類調用父類有參的。
1 public class Person 2 { 3 public string Name 4 { 5 get; 6 set; 7 } 8 public int Ages 9 {10 get;11 set;12 }13 public string Gender14 {15 get;16 set;17 }18 public string Linkway19 {20 get;21 set;22 }23 public Person(string name, int ages, string gender, string linkway)24 {25 this.Name = name;26 this.Ages = ages;27 this.Gender = gender;28 this.Linkway = linkway;29 }30 public Person(string name, int age)31 : this(name, age, "", "")32 {33 34 }35 }36 public class Chines : Person37 {38 /// <summary>39 /// 父類沒有該字段40 /// </summary>41 public DateTime? Creatre42 {43 get;44 set;45 }46 /// <summary>47 /// 繼承父類的構造函數48 /// </summary>49 public Chines(string name, int age, DateTime create)50 : base(name, age)51 {52 //需要自己賦值53 this.Creatre = create;54 }55 }
父類中有的字段,在子類調用構造函數的時候,可以直接用,寫父類沒有的。
. base關鍵字
創建父類對象,讓子類可以使用父類中的成員。
所以,如果在父類中重新寫了一個有參數的構造函數之后,那個無參數的就被干掉了,
子類就調用不到了,所以子類會報錯。
解決辦法:
1)、在父類中重新寫一個無參數的構造函數。
2)、在子類中顯示的調用父類的構造函數,使用關鍵字:base()
使用new關鍵字隱藏,父類的成員。
父類和子類中,有同名的方法,子類只能調用自己的成員,這時候報警告線,可以new關鍵字屏蔽父類的成員。
1 public class Person 2 { 3 public static void Get() 4 { 5 Console.WriteLine("父類。"); 6 } 7 } 8 public class Chines : Person 9 {10 public new void Get()11 {12 Console.WriteLine("子類");13 }14 }
1)子類可以復制給父類
2)如果父類中裝的是子類對象,那么父類可以強轉為子類對象。
Is:標識類型轉換,如果能夠轉換成功,則返回一個true,否則返回一個flase
as:表示類型轉換,如果能夠轉換則返回對應的對象。
|
未完待續……
新聞熱點
疑難解答