一、選擇題
1、C#中char類型的編碼是()
A.ASCB. Unicode C.GBKD. IEEE
2、C#語言中沒有指針,如果想在一個方法中改變傳入的參數(shù)值,那么應(yīng)當(dāng)在調(diào)用方法時,傳入變量的__________。
A.地址 ??B.引用 C.名稱 ???D. 對象
3、下面哪種情況屬于方法的重載:________。
A.方法名稱相同,參數(shù)類型不同
B.方法名稱不同,參數(shù)類型不同
C.方法名稱不同,參數(shù)類型相同
D.方法名稱相同,參數(shù)類型相同
4、 如果希望一個成員,無法被外界訪問,但是可以被子類訪問,應(yīng)當(dāng)使用_____修飾符。
????A.public
B.protected
C.internal
D.private
5、關(guān)于readonly關(guān)鍵字的作用,說法正確的是:________
A.它和const關(guān)鍵字的用法與功能一樣,為了與C語言區(qū)別,所以取了新名稱
?????B. readonly所修飾的變量是只讀的,且不需要立即初始化
C. readonly用于修飾方法的參數(shù),表示該參數(shù)在方法內(nèi)不可修改
D. readonly用于修飾文件對象,表示該文件只讀
6、static修飾方法時,它的作用是________。
A.表明該方法支持多態(tài)
B.表明該方法不支持多態(tài)
????C. 定義一個靜態(tài)方法,可以通過類名調(diào)用它
D.定義一個只能被調(diào)用一次的方法,且只能通過類名調(diào)用它
7、編寫屬性(Property)時,value 關(guān)鍵字的作用是_____:
A.用于獲取屬性的值
B.在 get 方法中表示當(dāng)前屬性最新的值
????C. 它是set方法的返回值,用于表示屬性更新是否成功
????D. 它是set方法的參數(shù),表示傳入的值(引用)
8、_______不是構(gòu)造方法的特點。(這是一個不嚴謹?shù)念}目)
??A.所有類都必須有構(gòu)造方法
??B.構(gòu)造方法只能通過類名稱調(diào)用
??C.構(gòu)造方法不可以被繼承
??D.構(gòu)造方法沒有返回值
?
9、重載運算符時,需要用到_________關(guān)鍵字。
A.this ??????B.operator
C.symbol ???D.operation
10、將string類型的變量 s 轉(zhuǎn)換為 int,可以用______。
??A.string.ToInt(s)
??B.Convert.ToInt32(s)
??C.(int)s
??D.int(s)
11、下面定義數(shù)組的語句,正確的是:
A.int a[] = new int[4];
B.int[] a;
C.int[] a = new int[1,2,3,4]
D.int a[] = new int[4]{1,2,3,4}
12、對于C#的多態(tài),說法正確的是:_______。
A.C#所有方法默認都是 virtual 的,直接重寫即是多態(tài)的,與 Java 類似
B.父類方法用virtual修飾,子類方法用 override 修飾
C.父類方法無需用virtual修飾,子類方法用 override 修飾
D.父類方法用virtual修飾,子類方法無需用 override 修飾
13、關(guān)于interface,說法不正確的是_______。
A.interface的中文是接口
B.一個類可以實現(xiàn)多個interface
C.interface可以被繼承
D.每一個類都默認從Interface繼承
14、下面有關(guān)抽象類的說法,正確的是_________
A.抽象類中至少應(yīng)有一個抽象方法
B.抽象類中的方法不能提供實現(xiàn)代碼
C.抽象類的派生類必須實現(xiàn)該抽象類的所有抽象方法
D.抽象類不能被實例化,因此不需要提供構(gòu)造方法
15、在_______情況下,無法使用 new 關(guān)鍵字創(chuàng)建一個類的對象。
A.沒有構(gòu)造方法的類
B.被const修飾的對象
C.在類的靜態(tài)方法中
D.某個類被abstract關(guān)鍵字修飾
16、下面有關(guān)屬性的說法,不正確的是_______。
A.屬性可以被繼承,不能被重寫
B.屬性可以不和任何字段相關(guān)聯(lián)
C.屬性的get訪問函數(shù)是不帶參數(shù)的特殊方法
D.屬性的set訪問函數(shù)是沒有任何返回值的特殊方法
17、.NET中,所有類的父類是________。
A.class
B.System
C.Type
D.Object
18、如果要寫一個只讀的屬性(Property),應(yīng)當(dāng)_______。
A.使用 readonly 修飾
B.僅提供get方法
C.僅提供set方法
D.使用const修飾
19、讀取一個圖片文件的內(nèi)容時,應(yīng)當(dāng)使用_________類。
A.StreamReader ??????B.StreamWriter
C.BinaryReader????????D.BinaryWriter
20、關(guān)于構(gòu)造方法和繼承,說法正確的是______。
A.構(gòu)造方法無法被繼承,子類必須用類名調(diào)用父類構(gòu)造方法
B.構(gòu)造方法無法被繼承,子類只能通過base關(guān)鍵字調(diào)用父類構(gòu)造方法
C.構(gòu)造方法是多態(tài)的,子類無需調(diào)用父類的構(gòu)造方法
D.構(gòu)造方法可以被繼承,但是子類必須調(diào)用父類構(gòu)造方法
二、填空題
[if !supportLists]1、?[endif]C#標(biāo)志符由字母、數(shù)字、下劃線組成,其中數(shù)字不能開頭。
2、面向?qū)ο笞罨镜奶卣魇?b>封裝、繼承、多態(tài)。
3、.NET中,所有類的父類是Object或 object。
4、異常處理需要使用try和catch兩個關(guān)鍵字。
6、C#中,類的繼承被限定為單繼承,但是一個類可以實現(xiàn)多個接口。
7、Plane類有一個double類型的變量 _Speed,它表示速度。請補全它的屬性定義:
public double Speed{
get{return _Speed;}
set{_Speed=value;}
8、有一個表示可繪制圖形的類(DrawableShape),它的父類是Shape。請補全下面的類定義。
abstract class Drawable Shape:Shape{
int _LineWith;
public DrawableShape():base(""DrawableShape"){
_LineWidth=1;
}
publicbastract void Draw();
}
三、問答題
1、 請說明方法重寫與重載的書寫方法。
重載:方法名稱相同,參數(shù)列表不同
重寫:方法的訪問修飾符、名稱、參數(shù)列表和返回值均相同,父類由virtual修飾,子類由override修飾
?
2、請說明構(gòu)造方法的特別之處。
(1)與類名稱相同。
(2)沒有返回值。
(3)只能通過new間接被調(diào)用。
(4)無法被繼承。
(5)所有類都具有。
(6)創(chuàng)建對象時,會從最頂層父類開始依次調(diào)用父類構(gòu)造方法。
3、對象序列化是很常用的功能,其作用是實現(xiàn)任何對象與字節(jié)數(shù)組之間的轉(zhuǎn)換。序列化是一個接口,名稱是ISerializable,它有兩個方法:
1、ToBytes:將當(dāng)前對象轉(zhuǎn)換為 byte 數(shù)組;
2、FromBytes:將數(shù)組內(nèi)容讀入對象,返回值表示是否執(zhí)行成功。
請寫出該接口的定義。
interface ISeralizable{
byte[]ToBytes();
bool From Bytes(byte[]bytes);
}
interface ISerializable{
byte[]ToBytes();
bool FromBytes(byte[]bytes);
}
4、有一個類,它有一個字符串?dāng)?shù)組成員content,請寫出對應(yīng)的索引器代碼。
String?this[int i]
{
????get { return content[i]; }
????set { content[i] = value; }
}
String this[int i]{
get{return content[i];}
set【contont[i]=value;}
}
int this[int index]{
get{return arr[index];}
set{arr[index]=value;}}