C#初識

來源:互聯網
上載者:User

     因為要看看Monocross的東西,用它去實現移動開發的跨平台。Monocross是利用C# .net 去做的,所以就看了下C#,C#與C++及java都蠻相似,但也有其一些獨特的東西,稍稍小結如下:

1、C#是一門建立在C++和java基礎上的物件導向的跨平台語言,但與java不同的是,C#的跨平台不是依賴於JVM,而是.net framework,這是C#與java的本質差別。

java編譯後形成位元組代碼,這些代碼需要在jre(java runtime environment)下提供的JVM上運行;C#程式也被編譯成IL(intermediate Language),運行在.net framework 的通用語言執行平台(Common Language Runtime)。

2、C#拋棄了C++中指標,禁止直接的記憶體操作。

3、C#的全部代碼都屬於類和對象的代碼,不存在全域變數、全域函數的概念。繼承方面,C#只允許單繼承。

4、強大的web應用支援;對XML的高度支援;

5、二維數組:

   e.g.定義一個二維整型數組a:

int [,]a;a = new int[2,3];orint [,]a = new int[2,3]{{1,2,3},{4,5,6}};

6、枚舉:
     

int[] a ={1,2,3,4};foreach(int i in a){     Console.WriteLine(i);  }

7、類的概念及繼承、重載、多態的概念與C++類似。

   在衍生類別中訪問基類中的成員,用base.xxx 。

   衍生類別D的建構函式調用基類C中的重載的建構函式: public D(int x, int y,int z) : base(x,y) {this.z = z;}

8、介面:

interface I{      void f(int x);  }class A: I{    public void f(int x)    {    }}

介面聲明:

interface I1{   void f(int x);                   //方法   int att{get;set;}           //屬性,可讀寫   event EventHandler OnDraw; //事件   string this [int index] {get; set;}  //索引器}

 

9、方法的委託:這是C#的特有的功能。

 

using System;namespace simpleDelegatePro{    delegate void MyDelegate(string s);    class A    {          public void f (sting msg)        {            Console.WriteLine(msg);        }          public static void g (sting msg)        {            Console.WriteLine(msg);        }     }    class B    {        public void h (MyDelegate m)        {             m("通過委託傳遞過來的是方法"+m.Method.Name+",這是調用該方法輸出的結果.");        }    }         class Program    {          MyDelegate gd  = new MyDelegate(A.g);          // 此後,“gd” 與“A.g” 同等,同一個函數名                   A a = new A();           MyDelegate fd  = new MyDelegate(a.f);          // 此後,“fd” 與“a.g” 同等,同一個函數名                    gd("這裡是靜態方法A.g()的委託gd輸出的結果");         //等效於A.g("這裡是靜態方法A.g()的委託gd輸出的結果");        Console.WriteLine("");         fd("這裡是對象a的方法f()的委託fd輸出的結果");         //等效於a.f("這裡是對象a的方法f()的委託fd輸出的結果");        Console.WriteLine("");        B b = new B();        b.h(fd);       //通過委託將方法a.f傳到方法b.h中        Console.ReadKey();          }            }}

 最終輸出的結果是:

這裡是靜態方法A.g()的委託gd輸出的結果
這裡是對象a的方法f()的委託fd輸出的結果
通過委託傳遞過來的是方法f,這是調用該方法輸出的結果.

 

 委託的聲明:

       屬性 修飾符 delegate 傳回型別 委託類型名(參數列表)

屬性、修飾符是可選項,可選的修飾符包括new public internal protected private

屬性列表和傳回型別共同決定了委託能過關連的一組方法。

委託的執行個體化:

 委派物件 = new 委託類型(關聯方法);

委託的引用:

在建立委託後,通過引用該對象可以實現對其關聯方法的調用,簡而言之,就是把委派物件名當作方法名來使用。

委託的組合:

 委託作為一種組合,它比C/C++中的函數指標的功能強得多,例如,委託可以做組合。

 

delegate string MyDelegate(int n);MyDelegate a,b,c,d;//在對a,b,c,d進行賦值後,可以進行下面的運算d = a + b + c; // 委託組合d = d - a ;

 

這時調用d就是調用其包含的所有委託,並將d的參數值傳遞給這些委託。如果關聯的方法具有傳回值,則組合的委託d返回委託列表中最後一個委託的傳回值。

 10、命名空間

命名空間是C#中一個重要的概念,它為程式邏輯結構提供了一種組織方式。

命名空間的聲明:

namespace 命名空間名{     命名空間成員;}

如果在一個命名空間中訪問另外一個命名空間的成員,需通過命名空間名實現:  命名空間名.命名空間成員

命名空間的匯入:

using 命名空間名;            //相當於java的import

 11、is & as

C#中的is操作符與Java中的instanceof操作符一樣,兩者都可以用來測試某個對象的執行個體是否屬於特定的類型。

 

在Java中沒有與C#中的as操作符等價的操作符。as操作符與is操作符非常相似,但它更富有“進取心”:如果類型正確的話,as操作符會嘗試把被測試的對象引用轉換成目標類型;否則,它把變數引用設定成null。

 

比如:兩個類:A和B
B b = new B();
//不用as,進行強制轉換,如果類型不符,會引發轉換異常
A a = (A) b;
//使用as,類型不符,不會引發異常,會返回一個null,此時 a = null
A a = b as A;

 12、attribute

http://www.cnblogs.com/-dawn/archive/2012/09/29/2708053.html

 13、using 

using在c#中有三種用法:

a、引用命名空間

b、建立別名:

    e.g.:

using MSWord = Microsoft.Office.Interop.Word;  

 

    好處:避免繁瑣;解決同一個.cs檔案中引用不同命名空間但是類名有相同的問題。

c、強制資源管理

用途:清理非託管資源,不受GC控制的資源。Using結束後會隱式的調用Disposable方法。相當於調用了一個局部的子程式。

check:http://developer.51cto.com/art/201105/263550.htm

 14、 List.AddRange 方法

將指定集合的元素添加到 List 的末尾。

命名空間:System.Collections.Generic
程式集:mscorlib(在 mscorlib.dll 中)

check:http://msdn.microsoft.com/zh-cn/library/z883w3dc(v=vs.80).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-4

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.