熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

C#簡明教程

2013-11-13 09:53:47  來源: .NET編程 
首先講解一下c#這裡只是粗略的講解詳細內容請購買相關書籍或參閱相關文檔c#已經取消了c++中的指針並且在c++中大量被使用的操作符 (:: >)已經不在出現c#中指支持一個c#具有面向對象編程語言的所有特性如封裝繼承多態等而且比java更面向對象每種類型都可以看作一個對象但c#指允許單繼承即一個類不會有多個基類另外c#沒有了全局函數沒有了全局變量也沒有了全局常量一切都必須封裝在一個類中

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


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

 程序代碼



class MikeCat
{
    public static void Main()
    {
        SystemConsoleWriteLine(邁克老貓c# 入門系列教程--歡迎訪問老貓的理想\n);
         SystemConsoleWriteLine(請輸入用戶名);
         string user=SystemConsoleReadLine();
         SystemConsoleWriteLine(歡迎你{}的光臨!user);
     }
}

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

  如果執行程序時要傳遞命令行參數給應用程序則Main()方法的格式應為
 
using System;
public class MikeCat
{
    public static void Main(string[] args)
    {
          ConsoleWriteLine(共有{}個命令行參數argsLength);
          for(int i=;i          {
                ConsoleWriteLine(Arg[{}]=[{}]iargs[i]);
          }
     }
}

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

  c#中使用常量

  using System
class MikeCat
{
    public const double PI=;
    public static void Main()
    {
         ConsoleWriteLine(圓周率PI的值為{}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
         zlName=邁克老貓;
         zlAge=;
         zlEmail=;
         ConsoleWriteLine(姓名{}年齡{}郵箱{}zlNamezlAgezlEmail);
    }
}

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

 c#中枚舉類型中的每個元素類型均為int byte long short型且第一個元素值為其後面的按遞增在枚舉中也可以直接給元素賦值後面的遞增

enum WeekDay:byte
{
    Sunday=MondayTuesdayWednesdayThursdayFridaySaturday



 

  繼續上回數組是我們經常用到的我來介紹一下數組是具有相同類型的一組數據當訪問數組中的數據時可以通過下標來指明c#中數組元素可以為任何數據類型數組下標從開始即第一個元素對應的下標為以後逐個遞增數組可以一維也可多維
    //包含個元素的一維整數數組;
     int[] mf=new int[]; //注意初始化數組的范圍或者指定初值;
    //包含個元素的一維整數數組初值
     int[] mf=new int[]{};
     //一維字符串數組如果提供了初始值設定項則還可以省略 new 運算符
     string[] mf={cc++c#};
     //一維對象數組
     Object[] mf = new Object[] { };
     //二維整數數組初值mf[]=mf[]=mf[]=mf[]=
     int[] mf=new int[]{{}{}};
     //*的二維整型數組
     int[] mf=new mf[];
    
     下面來看一個一維字符串數組的遍歷

    using System;
    public class MikeCat
    {
    static void PrintArray(string[] arr)
    {
    //打印數組元素arrLength 表示數組元素的個數
    for(int i=;i    {
    ConsoleWriteLine(arr[{}]={}iarr[i]);
    }
    }
    public static void Main()
    {
    string[] arr={cc++c#};
    //將數組作為一個參數傳遞
    PrintArray(arr);
    }
    }
  程序結果arr[]=c arr[]=c++ arr[]=c#
    
    下面來看一個列(*)的整型數組的遍歷

    using System;
    public class MikeCat
    {
    static void PrintArray(int[] arr)
    {
     //通過兩次FOR循環遍歷二維數組
      for(int i=;i<;i++)//初始化i作為循環變量i++實現該變量的自增運算
      //for循環滿足條件後執行完循環體一次後執行i++然後進入下次循環簡單的c語法這裡做簡單介紹照顧初學者(詳細可參閱譚浩強先生的c語言程序設計一書)
    {
    for(int j=;j<;j++)
    {
    ConsoleWriteLine(arr[{}{}]={}ijarr[ij]);//打印每個二維數組元素
    }
    }
    }
    public static void Main()
    {
    //主函數
    //將數組作為一個參數傳遞
    PrintArray(new int[]{{}{}{}{}};
    }
    }
  運行結果arr[]= arr[]= arr[]= arr[]= arr[]= arr[]= arr[]= arr[]=
    
    
  類是面向對象程序設計的基本構造塊詳細我們在後面介紹這裡我們介紹兩個特殊的類即object類和string類
   object類
   
   object類是預定義類SystemObject的別名它是所有其他類型的基類c#中所有類型都直接或間接從object類中繼承因此一個object類的變量可以賦予任何類型的值
   
int i=;
object obj;
obj=i;
object obj=a;
string類
    string類專門用於對字符串的操作他是預定義類SystemString的別名
   
string str=mikecat;
    可以用+號連接兩個字符串
   
string str=username:+mikecat;
    如果訪問單個字符則要用下標
   
char c=str[];
     比較兩個字符串是否相等可用比較操作符==//有別於basic語法
   
bool b=(str==str);

     c# 中取消了c和c++中使用最靈活也是最難掌握的指針那麼在c#中如何提供c/c++中的函數指針的功能?c#提供了委托(delegate)委托是繼承自SystemDelegate類的引用類型它相當於函數指針原型與函數指針不同的是委托在c#中是類型安全的委托特別適合於匿名調用要使用委托需經過三個步驟即聲明實例化調用

     using System;
     //聲明一個名為mfDelegate的委托該委托有一個string類型的參數
     //c#編譯器編譯時會產生一個新類該類繼承自SystemDelegate
     //名為mfDelegate
     public delegate void mfDelegate(string name);
   
     public class MikeCat
     {
     //定義與mfDelegate有相同參數類型的方法Hello()
     public static void Hello(string name)
     {
     ConsoleWriteLine(您好{}!name);
     }
     //定義與mfDelegate有相同參數類型的方法GoodBye()
     public static void GoodBye(string name)
     {
     ConsoleWriteLine(再見{}!name);
     }
     public static void Main()
     {
     //創建一個mfDelegate實例 mf
     mfDelegate mf=new mfDelegate(Hello);
     //調用mf
     mf(mikecat);
     mfDelegate mf=new mfDelegate(GoodBye);
     mf(mikecat);
     //將mf mf組合成一個新的委托mf
     mfDelegate mf=mf+mf;
     //調用mf
     mf(邁克老貓);
     //從組合的委托mf中刪除mf
     mfDelegate mf=mfmf;
     mf(mikecat);
     }
     }

 


   這次我們首先講解一下類型轉換我們在寫程序時經常用到類型轉換而且特別多的規則我在這裡粗略的講解一下
  隱式轉換是系統默認的不需要加以聲明即可進行的轉換

 隱式數值轉換
  
  隱式數值轉換實際上就是從低精度的數值類型轉換到高精度的數值類型的轉換
byte x=;ushort y=x;y=;float z=y;//均從低精度到高精度反之會產生溢出

    隱式數值轉換的類型太多我就不多介紹記住上面的原則就可以了詳細規則可查看msdn

  隱式枚舉轉換
  
  隱式枚舉轉換用於把十進制整數轉換成任何枚舉類型對應的其他整數則不存在這種轉換

  
using System;
enum Color
{
     RedGreenBlue
};
class MikeCat
{
     static void Main()
     {
            Color c;//聲明Color的變量c;
            c=;//將轉換為Red;
            ConsoleWriteLine(c的值是{}c);//結果c的值是Red;如果將c=改成c=則編譯器會給出錯誤
        }
}

  隱式引用轉換
    
  從任何引用類型到object的轉換
  從類類型A到類類型B的轉換其中類A從類B派生得到
  從類類型A到接口類型B的轉換其中類A實現了接口B
  從接口類型A到接口類型B的轉換其中接口A是從接口B派生
  從任何數組類型到SystemArray的轉換
  從任何委托類型到SystemDelegate的轉換
  從任何數組類型或委托類型到SystemICloneable的轉換
  從空類型(null)到任何引用類型的轉換
  顯示轉換也稱為強制轉換它需要用戶明確地指定轉換的類型

  
  char c=(char);//A
  int i=(int)


From:http://tw.wingwit.com/Article/program/net/201311/11894.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.