C#基礎概念

1.     面向對象的思想主要包括:繼承 多態 封裝
●       封裝:用抽象的數據類型將數據和基於數據的操作封裝在一起,數據被保護在抽象數據類型內部。
●       繼承:子類擁有父類的所有數據和操作。
●       多態:一個程序中同名的不同方法共存的情況。
  有兩種形式的多態– 重載與重寫。
 
2.     什麼是裝箱和拆箱
裝箱(boxing)和拆箱(unboxing)機制使得在C#類型系統中,任何值類型、引用類型和object(對象)類型之間進行轉換,這種轉換稱爲綁定連接。簡單地說,有了裝箱和拆箱的概念,對任何類型的值來說最終都可看作是object類型。   1、裝箱轉換
含義:將一個值類型隱式地轉換成一個object類型,或把這個值類型轉換成一個被該值類型應用的接口類型,把一個值類型的值裝箱,就是創建一個object實例並將值複製給這個object
如:  int I=10;   object obj=I;   也可用顯式的方法進行裝箱操作: object obj=(object)I;
  2、拆箱轉換
  和裝箱相反,拆箱轉換是指將一個對象類型顯式地轉換成一個值類型,或將一個接口類型顯式地轉換成一個執行該接口的值類型。
  過程分兩步:
首先,檢查這個對象實例,看它是否爲給定的值類型的裝箱值
然後,把這個實例的值拷貝給值類型的變量。如:
    int I=10;
   object obj=I;
Int j=(int)obj;
 
3.       重載與override
重載是指針對所繼承下來到方法,重新設計其處理方式,爲將來原本處理方式覆蓋過去。
在派生類要覆蓋的方法前加override修飾,而基類的同名方法前加virtual修飾。這樣就能實現多態。多態指一個程序中同名的不同方法共存的情況。  有兩種形式的多態– 重載與重寫。
 
4.       值類型和引用類型
●       值類型的變量本身包含他們的數據,而引用類型的變量包含的是指向包含數據的內存塊的引用或叫句柄。
●       值類型變量存儲在堆棧。每個程序在執行時都有自己的堆棧,其他程序不能訪問。
●       引用類型存儲在堆。引用類型存貯實際數據的引用值的地址。
●       C#中的引用類型有4種
●      (類、代表、數組、接口)
 
5.       理解委託
代理是C#中的一種新的類型,要把方法作爲參數傳遞給其他方法時,需要用到代理。
方法通過參數獲得外界傳遞給他的數據,並對這些數據進行一定的操作。
C#通過代理機制來實現,通過參數把一個方法傳遞給另外一個方法。
代理四步曲:
a.生成自定義代理類:delegate int MyDelegate();
b.用New運算符實例化代理類:
        MyDelegate d = new MyDelegate(MyClass.MyMethod);
c.最後通過實例對象調用方法:int ret = d();
d. 在程序中像調用方法一樣應用代理的實例對象調用它指向的方法。      delegate int d(int I);
 
6.       C#中的接口和類
什麼是類?類可以這麼理解.類就是功能的集合.類也可以看做是實現一種功能的集合或者方法..接口的概念:什麼是接口?接口可以理解爲,對類的規定,對類的約束,甚至對整個項目的約束. 種模版,定義了對象必須實現的方法,其目的就是讓這些方法可以作爲接口實例被引用。接口不能被實例化。接口是負責功能的定義,項目中通過接口來規範類,操作類以及抽象類的概念!而類是負責功能的具體實現!在類中也有抽象類的定義,抽象類與接口的區別在於:抽象類是一個不完全的類,類裏面有抽象的方法,屬性,也可以有具體的方法和屬性,需要進一步的專業化。但接口是一個行爲的規範,裏面的所有東西都是抽象的!一個類只可以繼承一個基類也就是父類,但可以實現多個接口
 
7.       net中讀寫數據庫需要用到的類
Connection DataAdapter DataSet Command DataReader
 
8.       理解.net中的垃圾回收機制
如果發現內存不夠,則垃圾回收器,將全部對象作爲無效對象(被回收對象),然後先將全局變量,static,處於活動中的局部變量,以及當前CG指針指向的對象放入一個表中.然後
會搜索新列表中的對象所引用的對象.加入列表中,其他沒有被加入列表的對象都會被回收.
非託管對象要記得釋放資源就行了吧.
 
9.       .net的錯誤處理機制
錯誤的處理順序:finally先,catch次之,最後退會try代碼..取消此次操作.返回catch中的異常信息.當然,你也可以定製自己的錯誤處理機制...如果你的異常處理中包含finally塊.則此finally無論是否發生異常始終會被執行...
 
10.   c#中的using和new
using 的用途是爲某個namespace建立別名,或者引用存在系統中的其它namespace.
New 用來創建實例,或者覆寫方法。
 
11.   類和結構的區別
1. 值類型與引用類型
●       結構是值類型:值類型在堆棧上分配地址
●       類是引用類型:引用類型在堆上分配地址
2.繼承性
●      結構:不能從另外一個結構或者類繼承,本身也不能被繼承,雖然沒有明確sealed聲明,可結構是隱式的sealed .
●       類:完全可擴展的,除非顯式聲明sealed, 否則類可以繼承其他類和接口,自身也能被繼承 。
注:雖然結構不能被繼承 ,可結構能夠繼承接口,方法和類繼承接口一樣 。
3.內部結構的區別:
結構:
●       沒有默認的構造函數,可以添加構造函數
●       沒有析構函數
●      沒有 abstract 和 sealed(因爲不能繼承)
●      不能有protected 修飾符
●      可以不用new 初始化
●      在結構中初始化實例字段是錯誤的
類:
●       有默認的構造函數
●      有析構函數
●       可以使用 abstract 和 sealed
●      有protected 修飾符
●      必須使用new 初始化
 
12.  CLR
公共語言運行時(Common Language Runtime,CLR),提供了一個可靠而完善的多語言運行環境。CLR是一個軟件引擎,用於加載應用程序、檢查錯誤、進行安全許可認證、執行和清空內存。它屬於純動態運行時的一種,它的主要組成部分是虛擬執行引擎VEE(Virtual Execution Enging),它可以打破語言和平臺的限制。
 
13.  C#的優點
 
1.     C#中指針已經消失. 允許對原始指針的有限制的使用.
2.    基於.NET平臺的,繼承了自動內存管理和垃圾回收的特點.
3.    C#擁有內建的支持來將任何組件轉換成一個web service,運行在任何平臺上的任何應用程序都可以通過互聯網來使用這個服務.
4.     面向對象的
14.  面向對象編程的三大原則
●      繼承:都支持類的單一繼承,但類可以實現多個接口。所有類都從一個公共的基類繼承。
●      封裝與可見性:都可決定類成員是否可見。除了C#的internal訪問修飾符外,兩者可見性機制非常相似
●      多態性:Java和C#都支持某些形式的多態性機制,且兩者實現方法非常類似。
 
15.  C#5種類型的可訪問性
●       public:成員可以從任何代碼訪問。
●       protected:成員只能從派生類訪問。
●      internal:成員只能從同一程序集的內部訪問。
●      protected internal:成員只能從同一程序集內的派生類訪問。
●      private:成員只能在當前類的內部訪問。
 
16.  C#代碼在執行前要編譯爲中間語言,中間語言的主要特徵:
● 面向對象和使用接口
● 值類型和引用類型之間的巨大差別
● 強數據類型
● 使用異常來處理錯誤
● 使用屬性(attribute)
 
17.  C#中引用類型
(類、代表、數組、接口)
18.  對象間可能存在的三種關係
●聚合,一個(較複雜的)對象由其他若干(較簡單的)對象作爲其構成部分,稱作聚合。
●關聯,對象之間的靜態聯繫(即通過對象屬性體現的聯繫)稱作關聯。
●繼承。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章