程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> c#初識

c#初識

編輯:C#入門知識

1.NET Framework 包括了三大部分:第一個部分是Common Language Runtime(CLR,所有.NET 程序語言公用的執行時期組件),第二部分是共享對象類別庫(提供所有.NET 程序語言所需要的基本對象),第三個部分是重新以組件的方式寫成的ASP.NET(舊版本則是以asp.dll提供ASP 網頁所需要的對象)。  2.c#的數據類型可以分為數值和非數值兩大類,數值又可以分為整型和非整型,非數值又包括字符類型和字符串類型。 3.變量的命名原則必須以字母,_或者@符號開頭,不能以數字開頭,變量名不能與C#中的關鍵字重復,而且大小寫是敏感的 4.const 數據類型 常量名 = 常量值 常量在定義時賦值,其他地方不允許賦值。常用於程序中一些不可改變的變量的修飾。 5.枚舉的好處在於限定了變量值的取值范圍 //定義一個枚舉類型      enum  sex:int  {   男 = 0,    女 = 1  }     //申明一個枚舉變量      enum  UserSex;      UserSex = sex.男;      如果我們要獲取男所對應的保存值,則可以使用      (int)UserSex 6.訪問修飾符  struct  結構名 {   訪問修飾符 數據類型  結構成員;  } 使用結構的好處在於可以將一組相互關聯的變量存儲為一組,通過變量名.成員名來訪問,避免了變量之間的混淆 其實  結構可以看成是一個輕量級的類 7.我們可以在申明數組後,通過數組下標一個一個的給數組中的數據賦值 如  int[] age = new int[10];  age[0] = 10,age[1] = 20     當然我們也可以在申明的時候直接賦值       int[] age = new int[10]{1,2,3,4,5,6,7,8,9,10}          或者       int[] age = new int[]{1,2,3,4,5,6,7,8,9,10}       在最後一種方法中,我們沒有指定數組的長度,系統會根據我們提供的數據來自動判斷數組長度。       除此以外,還有一種定義數組的語法       int[] age = {1,2,3} 8.[訪問修飾符] [static]  返回值類型   方法名(參數列表)     {  方法體;      } 方法名一般使用pascal命名法。 方法的重載: 即方法名相同,參數類型或者參數個數不同,返回值的類型不同並不能構成方法的重載。 9.out  在參數前加一個out修飾符,用於定義一個輸出參數,方法在退出前必須對這個參數賦值           out相對於return的好處在於,可以通過out修飾符讓一個方法返回多個值,而不是return的單個 值           out修飾的藏書在使用前可以不用初始化。      ref   在參數前加一個ref修飾符,用於定義一個引用參數,指示傳遞給方法的是一個引用類型,這和 值傳遞不同,對引用類型參數的操作會影響實參。            如public static void methodA ()  {   int a = 5;   methodB(ref a);  }  public static void methodB (ref int number)  {     }  methodA調用methodB方法,並將a變量作為一個引用傳遞給了methodB,那麼methodB方法體中隊參 數的任何修改都會影響到methodA中變量a的值         注意 如果在方法的參數定義中使用了out和ref修飾符,那麼調用者在調用方法時,在相應的參數 位置前也要指定修飾符         params修飾符  支持參數數組,把可變數量的參數作為一個邏輯參數傳遞給方法。可以理解為這個 修飾符是自動讓參數存儲在一個不定長的列表裡,我們在調用方法時,傳遞幾個參數,編譯器自動將這些參 數組裝成一個數組,                                            console.writeline()方法中就使用了這個參數修飾符          注意,如果方法的參數列表中使用了這個修飾符,那麼這個參數必須放在參數列表中的最後一個。 10.面向對象概念    三個特性 : 封裝,繼承,多態    類 : 類是具有某些共同特征的事物的抽象表示    對象  :類的實例,即抽象事物的具體化。    方法: 類能夠執行的動作    字段 :類的狀態,是指類的一組相關變量。 11.成員訪問級別    類的字段、屬性和方法都叫做類的成員,他們有自己的訪問級別,這用來控制類怎樣被訪問,訪問級別 有下列幾種    public  任何地方都可以訪問      private  只有定義成員的類可以訪問    protected  只有定義他們的類和子類可以訪問    internal   由當前程序集訪問    類型成員的默認修飾符為private 而類的默認修飾符為internal 12.字段與屬性     為了保護對象的私有數據,字段的訪問修飾符為private,那麼就只有定義它的類才可以操作這個字段 ,如果其他類需要操作這個字段,該怎麼辦麼,這就需要屬性了     屬性就是對字段的一種封裝,用來保護字段的數據。並且可以對賦給字段的值進行檢查,過濾不符合規 范的值     屬性的定義語法      訪問修飾符  數據類型  屬性名  {   get{ return  字段名;}   set{ 字段名= value ;}  }       從語法上可以看出,屬性可以看成一個擁有兩個子方法的方法,只不過在定義方法時需要()來定義參數,而屬性不需要。       通過對屬性內部get set方法的訪問控制,我們還可以設置只讀屬性,只寫屬性。默認情況下,get set方法的修飾符是繼承與屬性的訪問修飾符       注意  屬性並不存儲任何數據,他是通過對字段的訪問來達到存數數據和讀取數據的目的。故一般情 況下,屬性都會和一個字段有個映射關系。所有的數據都是存儲在字段中的。       自動屬性:當屬性內的get和set方法不包含任何檢查邏輯,指示簡單的給字段賦值和取值,那麼可以 使用自動屬性來簡化代碼   訪問修飾符  數據類型  屬性名  {   get;    set;  }  使用自動屬性時要注意,不能設置只讀或只寫屬性。 13.java應該說調用,而不是重寫 * 類一定有構造器 * 構造器不能繼承! * 子類構造器中, 一定調用父類構造器。 *子類構造器 默認調用父類無參數構造器! *如果父類沒有無參數構造器,就必須在子類中明確指定調用  父類的有參數構造器! 構造函數是類的一個特殊的方法,沒有返回值,連void都不用寫,在我們使用new關鍵字來分配對象時 會自動調用。它的作用在於實例化一個類的時候來給對象的各個字段賦初始值。 每個c#類在定義時會有一個默認的無參的構造函數,這個構造函數會對所有字段都賦予一個對應數據類型的默認值。 14.繼承的作用在於代碼的重用,子類可以除了可以訪問定義在基類中可訪問的成員外,還可以額外定義自 己特有的成員。如果我們在定義類的時候沒有指定父類,那就以為著這個類派生自Object類,Object類是所 有類的基類。 一個基類可以有多個子類,但是一個類只能有一個父類,C#並不支持多重繼承,c#通過接口的概念來實現相似的功能 繼承中的幾個關鍵字    this:表示當前對象即自己    base:表示自己的父類,可以通過base關鍵字來訪問父類中的成員。    sealed  : 這個關鍵字指示類不能被繼承,即不能派生出其他的子類。c#中的結構就是隱式使用了這個 關鍵字。    virtual: (虛方法)使用這個關鍵字來修飾方法,表示子類可以通過重寫這個方法的實現邏輯,這樣 就可以實現同一個父類方法在多個子類中的實現邏輯不相同,    override:  子類在重寫父類中用virtual修飾的方法時,必須使用override關鍵字,指示這個方法時重 寫了父類的方法    as:  用來快速判斷某個類型是否和另一個類型相兼容,不兼容則返回一個null    is: 也用於類型兼容性檢測,如果不兼容,則返回一個false。 子類和父類的相互轉換    子類可以隱式轉換為父類,但是父類不能隱式轉換成子類,如果我們需要將一個父類存儲到一個子類對 象中,我們必須執行強制轉換,強制轉換可能失敗,會帶來異常。所以在強制轉換前,必須由程序員來控制 該父類對象是否能轉換成一個子類對象。 經典繼承 (is-a)關系  語法  class A :class B  {     } 包含/委托 繼承   (has-a)關系 語法  class A  {   class B   {   }  } 15.c#中的異常處理機制稱為結構化異常處理 SEH   structred exception handing  它的作用在於提供了 一種標准的技術來發送和捕獲運行時的異常,並提供給用戶比較友好的錯誤信息。     c#中異常處理的4個要素     (1)一個包含異常詳細信息的類類型     (2)一個引發異常類實例的成員     (3)調用者的一段調用異常類型的代碼塊     (4)調用者的一段處理將要發生異常的代碼塊 16.static的使用需要注意幾點     靜態成員只能調用靜態成員,不能調用非靜態成員。     非靜態成員可以調用靜態成員,通過類名.靜態成員名來訪問,而不能通過對象名.靜態成員名來訪問。     靜態類是不能實例化的,即不能使用new關鍵字來分配一個靜態類 17.數據綁定的基本步驟 一、定義一個類和相關屬性,用來存儲我們需要綁定的值        public class Person     {         public string Name { get; set; }         public int Age { get; set; }  public int gender{ get; set; }         }   二、new一個類的實例,給需要綁定數據的控件設定DataContext屬性            Person p1 = new Person();//實例化一個類,並給對象屬性賦值,             p1.Name = "AAA";             p1.Age= 18;             textBox1.DataContext=p1;//設定控件的數據上下文,             textBox2.DataContext = p1;//設定控件的數據上下文,  三、在XAML中給控件使用Text={binding 屬性名}的形式來綁定一個數據        <TextBox Text="{Binding Name}" Name="textBox1" VerticalAlignment="Top" Width="120" />        <TextBox Text="{Binding Age}"   Name="textBox2" VerticalAlignment="Top" Width="120" />    這樣 ,我們就將person類的兩個屬性的值綁定到了兩個控件上, 18.INotifyPropertyChanged接口的工作就是當我們在後台直接修改對象屬性的時候,界面中也會同步更新修改後的屬性。     我們需要注意,當我們要實現這種功能的時候,我們必須使我們的類實現這個接口,即person類的定義必須修改如下      public class Person : INotifyPropertyChanged //實現INotifyPropertyChanged接口     {         private string name;         private int age;         public string Name         {             get             {                 return name;             }             set             {                 this.name = value;                 if ( PropertyChanged!= null )  //判斷是否有監聽程序                 {                     PropertyChanged (this,new PropertyChangedEventArgs("Name") );                 }             }         }         public int Age         {             get             {                 return age;             }             set             {                 this.age = value;                 if ( PropertyChanged != null )                 {                     PropertyChanged ( this, new PropertyChangedEventArgs ( "Age" ) );                 }             }         }         public event PropertyChangedEventHandler PropertyChanged;     }www.2cto.com    由於我們需要監聽屬性的set方法,所以我們不能再使用自動屬性了,必須手動的來書寫我們的屬性set方法,    if ( PropertyChanged!= null )  //判斷是否有監聽程序                 {                     PropertyChanged (this,new PropertyChangedEventArgs("Name") );                 } 這段代碼的意義可以理解為,當我們配置了一個監聽程序來監聽屬性是否改變,如果配置了,當屬性發生改變時,將通知界面,我的屬性已經改變,請及時修改。 19.索引的好處是有可能提高查詢效率,但是會占用空間,在insert update時可能降低效率。             CREATE  INDEX 索引名             ON 表名 (字段名1[ASC|DESC][, 字段名2 [ASC|DESC], ...])  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved