1.c#中類是否支援多繼承?請說明原因。
答:不支援,需要用介面來實現多繼承
2.我們都知道乙個類可以有多個建構函式,並且c#會在我們建立類的時候預設的提供乙個無參的建構函式,當我實現了另外乙個有引數的建構函式的時候,我還能呼叫無引數的建構函式嗎?請說明原因。
答:不能,因為一旦你實現了乙個建構函式,c#就不會再提供預設的建構函式了,所以需要自己手動寫入乙個無引數的建構函式。
3.請簡略描述過載和重寫的區別?
答:方法過載提供了乙個相同的方法但是方法簽名的引數不同的呼叫的實現。
重寫提供了子類中改變父類方法行為的實現。
4.請問能設定類a可被繼承,但類a中的某個方法不能被重寫嗎?
答:能,將類a的修飾符標記為public、標記類a中的不允許重寫的方法為sealed
sealed關鍵字不僅可以限制類,也可以限制方法。
5.const和readonly有什麼區別?
答:const關鍵字用來宣告編譯時的常量
readonly用來宣告執行時的常量
6.什麼時候必須宣告乙個類為抽象類?
答:(1)當這個類中有抽象方法的時候,必須宣告類為抽象類
(2)該類沒有完全實現父類的抽象方法時,也需要宣告為抽象類
7.介面和抽象類的區別是什麼?
答:介面中所有的方法都不能有實現,並且不能指定方法的修飾符
抽象類中可以有方法的實現,也可以指定方法的訪問修飾符
第乙個繼承介面的類必須實現介面裡的所有方法
而抽象類中抽象方法的實現是由第乙個非抽象的派生類來實現
8.類的私有成員會被子類繼承嗎?請說明原因。
答:會被子類繼承,但是不能被訪問。所以看上去是不能被繼承的,實際上確實被繼承了。
9.請寫出c#中的單例模式
答:public class single
public static single getinstance ()
return instance;}}
10.現有乙個整數number,請寫乙個方法判斷這個整數是否是2的n次方
答:private static bool getflag(int num)
11.追加乙個雙重鎖定的單例模式
[csharp]view plain
copy
using
system;
using
system.collections.generic;
///
/// 適用於在多執行緒的情況下保證只有乙個例項化物件的情況,例如銀行的作業系統
///
namespace
doublelockinstance
// 例項化物件的方法
public
static
singleton getinstance ()
} } return
myinstance;
} }
}
C 知識點整理
函式的呼叫約定 字首自增和字尾自增的區別 字首自增就是i 字尾自增就是 i。乙個變數使用字首或字尾方式增1的結果是一樣的。但,如果涉及到增1後的賦值,字首增1會把增1後的值賦值給其它變數,而字尾增1會把增1前的值賦值給其它變數。char型別自增方式 取值範圍是 128 127,當超過127時會溢位,...
知識點整理
一 標準庫容器和演算法 1.順序容器 與前面類似 2.關聯容器 map和multimap 元素包含key 鍵 和值 value 兩部分 按照鍵對元素排序 map不允許重複元素出現,但multimap可以 set和multliset 是包含已排序物件的關聯容器 只是單純的鍵的集合 set不允許重複鍵出...
知識點整理
一 標準庫容器和演算法 1.順序容器 與前面類似 2.關聯容器 map和multimap 元素包含key 鍵 和值 value 兩部分 按照鍵對元素排序 map不允許重複元素出現,但multimap可以 set和multliset 是包含已排序物件的關聯容器 只是單純的鍵的集合 set不允許重複鍵出...