国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C#基礎,C#基礎知識點,基礎知識點迅速鞏固

2019-11-14 15:56:39
字體:
來源:轉載
供稿:網友

一、方法(結構、數組、冒泡排序、3個參數重載)

1將string轉換為int類型

Convert.ToInt32(); int.Parse() ; int.TryParse()三種方式。

2 結構:可以幫助我們一次性聲明多個不同類型的變量。

public struct JG{    public string name;    public int age;}static void Main(string[] strag){    JG jg=new JG();    jg.name=”張三”;    jg.age=11;}

 

 

3 數組:一次性存儲多個相同類型的變量。

4冒泡排序:

            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;                    }                }            }

5.三個高級參數out、ref、parmas

  • Out參數:側重于在一個方法中返回(免使用return)多個不同類型的值
  • ref:能夠將一個變量帶入一個方法中進行改變,改變完成后,再將改變后的帶出方法。
  • Params:聲明參數的時候使用params,可以在調用的時候直接傳入params修飾的參數的元素。

注:多個參數時,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         }
    Out參數
     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         }
    ref參數
     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         }
    params

6.方法的重載

概念:指的是方法的名稱相同,但是參數不同。

1) 參數的個數相同,那么參數的類型就不能相同。

2) 參數的類型相同,那么參數的個數就不能相同。

7.方法的遞歸

方法自己調用自己。但是也得有一個條件讓他自己不在循環≠死循環。

 

 

注:每調一次遞歸函數,就相當于進入一個門。最后return 的時候會在一層一層的返回。

8.靜態變量

public static  int i=0;

可以選擇將字段聲明為 static。 這使得調用方在任何時候都能使用字段,即使類沒有任何實例。

二、面向對象基礎

1.基本語法

1.類概念:我們把這些具有相同屬性和相同方法的對象進行進一步的封裝,抽象出來。

類就是一個模子,確定了對象應該具有的屬性和方法。

對象是根據類創建出來的。

public class 類名

         字段;   存儲數據。

   屬性;  

     方法;   描述對象的行為。

類的實例化:寫好了類之后,我們需要創建這個類的對象,那么,我們管創建這個類的對象過程稱之為類的實例化。

 

this關鍵字:代表當前類的對象。

注:類是不占內存的,對象是占內存的。字段會有一個默認的初值,會在內存中開辟空間。

結構和類的區別:結構是面向過程的,類是面向對象的。關鍵字一個是classstruct

結構不具備類(特征)的:封裝、繼承和多態

2.屬性:

屬性的作用就是保護字段、對字段的賦值和取值進行限定。

注:屬性的本質就是兩個方法。get,set方法。

3.靜態與非靜態

.看有沒有被static標記

static標記為靜態;

沒有static標記為非靜態;

1) 在非靜態類中,既可以有實例成員,也可以有靜態成員。

2) 在調用實例成員的時候,需要使用對象名.示例名。

再調用靜態成員的時候,需要使用類名.靜態成員名。

。總結:靜態成員必須使用類名去調用,而實例成員使用對象名調用。

靜態函數中,只能訪問靜態成員,不允許訪問實例成員。

實例函數中,既可以使用靜態成員,也可以使用實例成員。

使用:

1) 如果你想要類,當做一個工具類去使用,這個時候可以把類寫成靜態類。

2) 靜態類中在整個項目中資源共享。

 

4.構造函數

作用:幫助我們初始化對象(給對象的每個屬性依次的賦值);

構造函數是一個特殊的方法。

方便我們快捷的給一個對象初始化。

5.New關鍵字

new幫助我們做了3件事:

1)、在內存中開辟一塊空間

2)、在開辟空間中創建對象

3)、調用對象的構造函數進行初始化對象

6.this關鍵字

這段代碼多次重復數賦值字段構成了冗余

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         }

7.析構函數

~類名()

         //不用調用,自己執行。

三、繼承

 

1.命名空間

概念:可以解決類的重名問題。可以看作類的文件夾。

 

 

2.值類型和引用類型

區別:

1.內存中的分配的空間是不一樣的。

2.傳遞的方式也是不同的。(值傳遞和引用傳遞

內存空間認為的分為5塊:

注:程序員常用的是:堆、棧、靜態存儲區域

值類型:int、double、struct、bool、char、decimal、enum

引用類型:引用類型:string 數組、自定義類、集合、object、接口

 

 

 

 

注:值類型在復制的時候,傳遞的是這個值得本身。

引用類型在復制的時候傳遞的時候是對對象的引用。

3.字符串不可變性

1.當你給一個字符串重新賦值后,老值并沒有銷毀,兒時重新開辟了一個空間存儲新值。棧的地址會得到更新。

當程序結束后,GC掃描整個內存,如果發現有的空間沒有指向,則立即把它銷毀。

StringBuilder 一般是沒有再新開空間。

 

4.繼承

封裝概念:把常用的東西封裝起來。

繼承概念:我們可能會在一些類中,寫一些重復的成員,我們可以將這些重復的成員單獨的封裝到一個類中,作為這些類的父類。

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     }
this、base、構造函數

父類中有的字段,在子類調用構造函數的時候,可以直接用,寫父類沒有的。

. base關鍵字

創建父類對象,讓子類可以使用父類中的成員。

所以,如果在父類中重新寫了一個有參數的構造函數之后,那個無參數的就被干掉了,

子類就調用不到了,所以子類會報錯。

解決辦法:

1)、在父類中重新寫一個無參數的構造函數。

2)、在子類中顯示的調用父類的構造函數,使用關鍵字:base()

5.new 關鍵字(二)

使用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     }

6.里氏轉換

1)子類可以復制給父類

2)如果父類中裝的是子類對象,那么父類可以強轉為子類對象。

7.is和as關鍵字

Is:標識類型轉換,如果能夠轉換成功,則返回一個true,否則返回一個flase

as:表示類型轉換,如果能夠轉換則返回對應的對象。

8.訪問修飾符

                                              

修飾符

用途

訪問修飾符

  • public

  • PRivate

  • internal

  • protected

指定聲明的類型和類型成員的可訪問性。

abstract

指示某個類只能是其他類的基類。

const

指定無法修改字段或局部變量的值。

event

聲明事件。

extern

指示在外部實現方法。

new

從基類成員隱藏繼承的成員。

override

提供從基類繼承的虛擬成員的新實現。

partial — 部分

在整個同一程序集中定義分部類、結構和方法。

readonly

聲明一個字段,該字段只能賦值為該聲明的一部分或者在同一個類的構造函數中。

sealed

指定類不能被繼承。

static

聲明屬于類型本身而不是屬于特定對象的成員。

unsafe

聲明不安全的上下文。

virtual

在派生類中聲明其實現可由重寫成員更改的方法或訪問器。

volatile

指示字段可由操作系統、硬件或并發執行線程等在程序中進行修改。

9集合:ArrayList和HashTable

 

未完待續&hellip;…

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 七台河市| 吉木萨尔县| 衢州市| 旬阳县| 阳朔县| 合作市| 区。| 柯坪县| 云浮市| 洛阳市| 城固县| 丰台区| 凤山市| 敦煌市| 斗六市| 车险| 海丰县| 新丰县| 灵璧县| 三江| 司法| 泊头市| 龙泉市| 许昌县| 南澳县| 类乌齐县| 迁西县| 盘锦市| 尚志市| 绍兴市| 五寨县| 黄陵县| 商丘市| 通辽市| 永善县| 洞头县| 武胜县| 云南省| 华坪县| 马鞍山市| 博白县|