關於c#基礎的一些需要知道的題

1. 面向對象的特徵有哪些方面?

答:

面向對象的編程語言有封裝、繼承 、抽象、多態等4個主要的特徵。

①封裝:封裝的目標就是要實現軟件部件的“高內聚、低耦合”,防止程序相互依賴性而帶來的變動影響。

②抽象:抽象就是找出一些事物的相似和共性之處,然後將這些事物歸爲一個類。

③繼承:子類繼承父類成員,實現代碼複用,提高了軟件的可重用性和可擴展性。

④多態:不同子類對同一個消息作出不同的反映,提高軟件靈活性。

2.c#中標識(zhì)符定義?命名規則?

①標識符是一種字符串,用來命名如變量、方法、參數和其他程序結構。

②字母、下劃線、可以用在任何位置,數字不能放在首位,@字符只能放在標識符的首位

注意:標識符不能和關鍵字重複

3.對象和類的區別是什麼?

答:

“類”(Class)具有相同屬性和方法的一組對象的集合 。

類是抽象的概念,僅僅是模板

對象是一個你能夠看得到、摸得着的具體實體

4.什麼是類的方法?

答:

類是由一組具有相同屬性和共同行爲的實體抽象而來,對象執行的操作通過編寫類的方法來實現。

可見,類的方法是一個功能模塊,作用是“做一件事”。

5. 什麼是局部變量,什麼是成員變量?

答:

局部變量是指一個方法中定義的變量;成員變量是指在類範圍裏定義的變量,也就是屬性。

6. 靜態成員和實例成員的區別?

答:

使用static修飾的成員稱爲靜態成員,使用實例對象調用的成員稱爲實例成員


7. 什麼是裝箱和拆箱?

答:

裝箱就是把值類型轉成引用類型:裝箱就是把值類型(包括int與結構這樣的內置類型)轉換爲object類型,

拆箱就是把引用類型轉換爲值類型,裝箱與拆箱實現了兩種類型的互換;

8. 類成員有幾種可訪問形式?簡述可訪問形式修飾符的訪問權限。

答:

可訪問形式有 private、 protected、 public、 internal;

   public(公共的): 完全公開,訪問不受限制。
   protected(保護的): 訪問僅限於包含類或從包含類派生的類型。該類內部和繼承類中可以訪問。
   internal(內部的): 訪問僅限於當前程序集。在同一命名空間內可以訪問。
   protected internal(內部保護的): 訪問僅限於從包含類派生的當前程序集或類型。

   private(私有的) :訪問僅限於包含類型。在類的內部纔可以訪問。

9. 繼承的特點有哪些?

答:

C# 繼承通過 : 關鍵字來實現,實現繼承的類被稱爲子類,被繼承的類被稱爲父類.

有的也稱爲基類、超類。父類和子類的關係是is-a的關係,即子類is-a父類。

10. 如何在C#中實現繼承?

答: 

在類名後加上一個冒號,再加上基類的名稱。

11.const和readonly有什麼區別?

答:

const可以用於類的成員常量和局部常量,必須在聲明時賦值,之後不可以對常量進行賦值。

而readonly只能用於類的成員變量不能用於局部變量,在聲明時可以不賦值,除了在構造函數中可以再次賦值外,其它的地方和const一樣也不能賦值。

12.接口和抽象類具有什麼區別?

答:

含有abstract修飾符的class即爲抽象類,abstract 類不能創建的實例對象。

含有abstract方法的類必須定義爲abstract class,abstract class類中的方法不必是抽象的。

abstract class類中定義抽象方法必須在具體子類中實現,所以,不能有抽象構造方法或抽象靜態方法。

如果的子類沒有實現抽象父類中的所有抽象方法,那麼子類也必須定義爲abstract類型。

接口(interface)可以說成是抽象類的一種特例,接口中的所有方法都必須是抽象的。

接口中的方法定義默認爲public abstract類型

下面比較一下兩者的語法區別:

1. 抽象類可以有構造方法,接口中不能有構造方法。

2. 抽象類中可以包含非抽象的普通方法,接口中的所有方法必須都是抽象的,不能有非抽象的普通方法。

3. 抽象類中抽象方法可以指定爲public,接口中抽象方法不能指定任何修飾符,默認就是public

4. 一個類可以實現多個接口,但只能繼承一個抽象類。

13.什麼是抽象類?

答:

抽象類不能創建實例,它只能作爲父類被繼承。

抽象類是從多個具體類中抽象出來的父類,它具有更高層次的抽象。

從多個具有相同特徵的類中抽象出一個抽象類,以這個抽象類作爲其子類的模板,從而避免了子類的隨意性。

14.接口和抽象類兩者在應用上的區別:

答:

接口更多的是在系統架構設計方法發揮作用,主要用於定義模塊之間的通信契約。

而抽象類在代碼實現方面發揮作用,可以實現代碼的重用

15.如何區別重載方法? 

答:

不同的參數類型,不同的參數個數,不同的參數順序。

16.堆和棧的區別?

答:

棧:由編譯器自動分配、釋放。值類型通常在棧上。

堆:一般由程序員分配釋放。引用類型分配在堆上。

17.請簡述值類型和引用類型的區別?

答:

值類型都是存在棧中;

引用類型存放在堆中,並會把地址存放在棧中。

如果爲在另一個方法中調用值類型,並不會改變原方法中值類型的值;

如果在另一個方法中調用引用類型的值,則會將引用類型的值改變。

值類型:byte,int,short,long,char,float,double,bool,枚舉:enum,結構體:struct

引用類型:類,接口,委託,object,string







數字不能放在首位數字不能放在首位


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章