自學.NET之路-C#編程之基礎總結

來源:互聯網
上載者:User

 .NetFramework簡介
.netframework運行於作業系統之上,提供良好的跨語言特性。
.netframework包含兩個內容:通用語言執行平台(CLR)和類庫集(FCL)
MSIL微軟中繼語言。當編譯.net支援的語言編寫的代碼的時候,輸出的代碼為MSIL
CLR又包含:通用語言規範(CLS:保證語言互通性的一組規則)和公用類型系統(CTS:包含了.net支援的各語言間相容的資料類型和功能)

--------------------------------------------------------------------------------

C#中的變數和常量
C#中的基礎資料型別 (Elementary Data Type):
實值型別和參考型別
實值型別:簡單類型、結構類型和枚舉類型。
簡單類型:整數類型、浮點類型、小數類型(decimal)和布爾類型等
sbyte是有符號的,相當java的byte型,範圍-128~127
C#中byte是無符號的,範圍0~255

--------------------------------------------------------------------------------

變數命名方法:
帕斯卡命名法和駱駝命名法
帕斯卡命名法:如果有多個單片語成,每個單字首大寫
駱駝命名法:如果有多個單片語成,第一個單詞全部小寫,後面的單詞大寫

--------------------------------------------------------------------------------

C#中的常量:const與readonly兩種
const聲明的常量:叫靜態常量,必須聲明時就初始化,且只能用常數值初始化
readonly聲明的常量:叫動態常量,可以在聲明時不初始化,只能在建構函式中初始化,但必須每個建構函式中都要初始化;而且可以使用變數值初始化

class Test
{
        const  float PI = 3.1416f;       //常量命名:全部大寫
        readonly float G;
        public Test()
        {
                G = 9.80F;
        }
        public Test(float g) //每個建構函式中都要初始化;而且可以使用變數值初始化
        {
                G = g;
        }
}

--------------------------------------------------------------------------------

C#中的裝箱和拆箱
裝箱:實值型別轉換成有參考型別
拆箱:參考型別轉換成實值型別
實值型別:存在棧中
參考型別:在堆中存放對象的地址(即引用),對象本身存放在棧中
拆裝箱允許實值型別和參考型別相互處理

--------------------------------------------------------------------------------

C#文法

Switch()括弧中可以是int ,char和string ,switch語句中的case語句冒號後什麼都不寫,可以不寫break,其他情況一定要寫break,否則報錯

數組:五種聲明方式
   int []array;
   array = new int[2];

   //第二種聲明方式
   int []array1 = new int[2];

   //第三種聲明方式
   int []array2 = {1,2,3};

   //第四種聲明方式
   int []array3 = new int[]{1,2,3};

   //第五種聲明方式
   int []array4 = new int[3]{1,2,3};

   //數組大小也可以是變數
   int count = 3;
   int []arr = new int[count];

 

--------------------------------------------------------------------------------

枚舉:用有意義的字元去訪問資料
public enum Contry:long  //指定枚舉類型,必須是整型,不寫為int型
  {
   Pacific,         //第一個未付值,預設為零
   China=1860,
   Japan,
   US=1901,
   Canada
 
  }

--------------------------------------------------------------------------------

C#中的物件導向
解構函式:函數名與建構函式名一樣,~函數名(),不接受參數,由記憶體回收行程自動調用(GC.Collect()調用記憶體回收行程)
 

virtual關鍵字:C#中,子類要重寫父類的方法,必須把父類的方法標識為virtual(虛擬),同時重寫方法用override修飾
new 關鍵字:new關鍵字:在子類中定義的一個和父類方法簽名一樣,但是個全新的方法。並非重寫父類的方法。
base關鍵字:用base關鍵字調用父類的方法

存取修飾詞:
public 公有的,
internal 在一個項目中的,
protected有父子關係的類,
private僅所屬類的成員

注意:如果有一個類既繼承類又實現介面,類名要寫在介面名前面。

 

--------------------------------------------------------------------------------

屬性,索引器,委託,事件

屬性:訪問修飾一般為public,首字母大寫。屬性內有get和set訪問器,get內必須要有return,set內有value關鍵字,代表從外部接受的值。
索引器:索引器的作用:像處理數組一樣去處理類的對象。
    public class Student
      {
          private string []obj=new string[10];

          //this關鍵字在這裡代表每一個類的對象,[]中整數是指通過下標訪問
          public string this[int index]            //此是可以通過索引號去訪問每一個類的成員  
          {
               get
               {
                    return obj[index];
               }
               set
               {
                    if(value!=null)
                    obj[index]=value;
               }
          }
         static void Main(string []args)
         {
                  Student stucollection=new Student();
                   stucollection[0]="柯南";
                   stucollection[1]="小五郎";
                   stucollection[5]="怪盜基德";
         }
      }

委託:相當於函數指標,可使程式在運行是再指定具體要啟動並執行方法。
(1) 定義委託:Public delegate int Call()
(2) 執行個體化委託:objcall=new Call(方法名)
(3) 調用委託:objcall();

事件:事件實際上是一種特殊的委託,委託每次只能指向一個方法,而事件可以指向多個方法
(1)定義一個委託public delegate void delegateMe();
(2)定義一個事件 private event delegate eventMe;
(3)訂閱事件    eventMe+=new delegateMe(方法名1());
                       eventMe+=new delegateMe(方法名2());
(4) 引發事件    if(condition)   then  eventMe();

 

--------------------------------------------------------------------------------

多線程

建立線程執行個體:
Thread obj=new Thread(new ThreadStart(方法名稱))
開始:Start();
休眠:Sleep();
終止:Abort();
掛起:Suspend();
恢複:Resume();
當前線程:Thread.CurrentThread
ThreadPriority枚舉值用來指定調度線程的優先順序(共5級)

lock關鍵字
C#中通過lock關鍵字提供同步
線程同步:確保不同的線程對共用資源進行訪問時,每次只有一個線程訪問資源。
Lock(this)
{
     For(int i=0;i<10;i++)
     {
          //語句;
     }
}

 

--------------------------------------------------------------------------------

數組集合對象

Array: Array和數組很相似,還可以相互轉化和拷貝,很多方法都是是通用, 可以用Array的靜態方法對數組實現反轉,排序,這是數組本身無法做到的

using  system.Array;
Array ar=Array.CreateInstance(typeof(int),5);   //建立一個Array的執行個體
ar.SetValue(12,0);                          //賦值

 Array.Reverse(ar);    // 反轉
 Array.Sort(ar);        // 排序

ArrayList:最常用的集合之一.集合的好處是在不知道資料大小時,可以實現容量自動成長,而數組做不到.
Add()添加元素
Remove(位置)移除元素

ArrayList al=new ArrayList();
//如果要遍曆集合元素,
   //方法一:
   //將集合中的數拷貝到數組中
   object []temp=al.ToArray();
   foreach(object t in temp)
   {
    Console.WriteLine(t);
   }

   //方法二,使用迭代器
   IEnumerator ie=al.GetEnumerator();
   while(ie.MoveNext())
   {
    Console.WriteLine(ie.Current);
   }

HashTable:以索引值對的形式儲存值

Hashtable hash=new Hashtable(4);
 hash.Add("中國",1860);         
 hash.Add("德國",1940);

 Console.WriteLine(hash["中國"].ToString());通過key獲得value

SortedList :是 Hashtable 和 Array 的混合
能存放索引值對,類似Hashtable
能通過自身提供的方法通過索引直接遍曆,類似於Array
objsortlist.GetKey(i)   方法獲得鍵
objsortlist.GetByIndex(i)方法獲得值
 
 
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.