C#簡明教程

來源:互聯網
上載者:User
教程   首先講解一下c#,這裡只是粗略的講解,詳細內容請購買相關書籍,或參閱相關文檔。c#已經取消了c++中的指標,並且在c++中大量被使用的操作符 (:: ->)已經不在出現,c#中指支援一個"."。c#具有物件導向程式設計語言的所有特性,如封裝、繼承、多態等。而且比java更物件導向,每種類型都可以看作一個對象。但c#指允許單繼承,即一個類不會有多個基類。另外,c#沒有了全域函數,沒有了全域變數,也沒有了全域常量。一切都必須封裝在一個類中。

  下面舉一個控制台應用程式的小例子:

using System;
class MikeCat
{
    public static void Main()
    {
        Console.WriteLine("邁克老貓c# asp.net入門系列教程--歡迎訪問老貓的理想");
    }
}        
      在c#中程式總是從Main()方法開始,Main()方法必須且只能包含在一個類中,Main()方法返回的類型可以是void(無傳回值)或int(返回代表應用程式錯誤層級的整數)。
     上面的using System;用於匯入名字空間(Namespace)用來表明類的層次關係。如果不用using匯入名字空間,則每次用某一個類時就得在類名前面加上名字空間。
      c#程式的輸入輸出通過Console來實現。Console是System名字空間下的一個類。在螢幕上輸出一個字串用Console.WriteLine(),接受輸入裝置的輸入用Console.ReadLine()方法。

 程式碼:


class MikeCat
{
    public static void Main()
    {
        System.Console.WriteLine("邁克老貓c# asp.net入門系列教程--歡迎訪問老貓的理想\n");
         System.Console.WriteLine("請輸入使用者名稱:");
         string user=System.Console.ReadLine();
         System.Console.WriteLine("歡迎你:{0}的光臨!",user);
     }
}

   WriteLine()方法的參數表中緊隨串後的第一個參數將替換{0}。

  如果執行程式時要傳遞命令列參數給應用程式,則Main()方法的格式應為:
  using System;
public class MikeCat
{
    public static void Main(string[] args)
    {
          Console.WriteLine("共有{0}個命令列參數",args.Length);
          for(int i=0;i          {
                Console.WriteLine("Arg[{0}]=[{1}]",i,args[i]);
          }
     }
}

     c#中的單行注釋用//,多行注釋用/*...*/

     c#中使用常量:

using System
class MikeCat
{
    public const double PI=3.14;
    public static void Main()
    {
         Console.WriteLine("圓周率PI的值為{0}",PI);
    }
}

        結構體類型(struct)是一種複合資料型別,用於將某些相關的資料群組織到一個新的資料類型中。

using System;
struct MikeCat
{
    public string Mike;//user
    public uint Age;//age
    public string Email;//email
}

class mf
{
    public static void Main()
    {
         MikeCat zl;//聲明結構體類型變數zl
         zl.Name="邁克老貓";
         zl.Age=24;
         zl.Email="mike@hebut.com";
         Console.WriteLine("姓名:{0},年齡:{1},郵箱{2}",zl.Name,zl.Age,zl.Email);
    }
}

    c#中枚舉類型(enum)是一組邏輯上密不可分的整數值:
 

 c#中枚舉類型中的每個元素類型均為int byte long short型,且第一個元素值為0,其後面的按1遞增。在枚舉中也可以直接給元素賦值,後面的遞增。
enum WeekDay:byte
{
    Sunday=1,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday

  繼續上回,數組是我們經常用到的,我來介紹一下:數組是具有相同類型的一組資料。當訪問數組中的資料時,可以通過下標來指明。c#中數組元素可以為任何資料類型,數組下標從0開始,即第一個元素對應的下標為0,以後逐個遞增。數組可以一維也可多維。
    //包含6個元素的一維整數數組;
     int[] mf1=new int[6]; //注意初始化數組的範圍,或者指定初值;
    //包含6個元素的一維整數數組,初值1,2,3,4,5,6
     int[] mf2=new int[6]{1,2,3,4,5,6};
     //一維字串數組,如果提供了初始值設定項,則還可以省略 new 運算子
     string[] mf3={"c","c++","c#"};
     //一維對象數組
     Object[] mf4 = new Object[5] { 26, 27, 28, 29, 30 };
     //二維整數數組,初值mf5[0,0]=1,mf5[0,1]=2,mf5[1,0]=3,mf5[1,1]=4
     int[,] mf5=new int[,]{{1,2},{3,4}};
     //6*6的二維整型數組
     int[,] mf6=new mf[6,6];
    
     下面來看一個一維字串數組的遍曆
    using System;
    public class MikeCat
    {
    static void PrintArray(string[] arr)
    {
    //列印數組元素,arr.Length 表示數組元素的個數
    for(int i=0;i    {
    Console.WriteLine("arr[{0}]={1}",i,arr[i]);
    }
    }
    public static void Main()
    {
    string[] arr={"c","c++","c#"};
    //將數組作為一個參數傳遞
    PrintArray(arr);
    }
    }
  程式結果:arr[0]=c arr[1]=c++ arr[2]=c#
    
    下面來看一個4行2列(4*2)的整型數組的遍曆:
    using System;
    public class MikeCat
    {
    static void PrintArray(int[,] arr)
    {
     //通過兩次FOR迴圈遍曆二維數組
      for(int i=0;i<4;i++)//初始化i作為迴圈變數,i++實現該變數的自增運算。
      //for迴圈滿足條件後執行完迴圈體一次後執行i++,然後進入下次迴圈。簡單的c文法,這裡做簡單介紹照顧初學者。(詳細可參閱譚浩強先生的c語言程式設計一書)
    {
    for(int j=0;j<2;j++)
    {
    Console.WriteLine("arr[{0},{1}]={2}",i,j,arr[i,j]);//列印每個二維數組元素
    }
    }
    }
    public static void Main()
    {
    //主函數
    //將數組作為一個參數傳遞
    PrintArray(new int[,]{{1,2},{3,4},{5,6},{7,8}};
    }
    }
    運行結果:arr[0,0]=1 arr[0,1]=2 arr[1,0]=3 arr[1,1]=4 arr[2,0]=5 arr[2,1]=6 arr[3,0]=7 arr[3,1]=8
    
    
  類是物件導向程式設計的基本構造塊,詳細我們在後面介紹。這裡我們介紹兩個特殊的類,即object類和string類
    1.object類
   
   object類是預定義類System.Object的別名,它是所有其他類型的基類。c#中所有類型都直接或間接從object類中繼承。因此,一個object類的變數可以賦予任何類型的值。
    int i=30;
object obj1;
obj1=i;
object obj2='a';
    2.string類
    string類專門用於對字串的操作,他是預定義類System.String的別名
    string str1="mikecat";
    可以用"+"號串連兩個字串。
    string str2="username:"+"mikecat";
    如果訪問單個字元,則要用下標。
    char c=str1[0];
     比較兩個字串是否相等,可用比較操作符"=="//有別於basic文法
    bool b=(str1==str2);

     c# 中,取消了c和c++中使用最靈活,也是最難掌握的指標。那麼在c#中如何提供c/c++中的函數指標的功能?c#提供了委託(delegate),委託是繼承自System.Delegate類的參考型別。它相當於函數指標原型。與函數指標不同的是,委託在c#中是型別安全的,委託特別適合於匿名調用。要使用委託需經過三個步驟,即聲明、執行個體化、調用。
     using System;
     //聲明一個名為mfDelegate的委託,該委託有一個string類型的參數
     //c#編譯器編譯時間會產生一個新類,該類繼承自System.Delegate,類
     //名為mfDelegate
     public delegate void mfDelegate(string name);
   
     public class MikeCat
     {
     //定義與mfDelegate有相同參數類型的方法Hello()
     public static void Hello(string name)
     {
     Console.WriteLine("您好,{0}!",name);
     }
     //定義與mfDelegate有相同參數類型的方法GoodBye()
     public static void GoodBye(string name)
     {
     Console.WriteLine("再見,{0}!",name);
     }
     public static void Main()
     {
     //建立一個mfDelegate執行個體 mf1
     mfDelegate mf1=new mfDelegate(Hello);
     //調用mf1
     mf1("mikecat");
     mfDelegate mf2=new mfDelegate(GoodBye);
     mf2("mikecat");
     //將mf1 mf2組合成一個新的委託mf3
     mfDelegate mf3=mf1+mf2;
     //調用mf3
     mf3("邁克老貓");
     //從組合的委託mf3中刪除mf1
     mfDelegate mf4=mf3-mf1;
     mf4("mikecat");
     }
     }

相關文章

聯繫我們

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