1. c#支持的數(shù)據(jù)類型有那些?與c++相比有哪些特點(diǎn)?
【解答】
c#支持的數(shù)據(jù)類型有:
(1) 值類型
包括:簡(jiǎn)單類型、結(jié)構(gòu)類型、枚舉類型。其中,簡(jiǎn)單類型又分為:整型、布爾型、字符型、浮點(diǎn)型、小數(shù)型。
(2) 引用類型
包括:對(duì)象類型、類類型、接口、元數(shù)據(jù)、字符串類型、數(shù)組。
與c++相比,c#的主要特點(diǎn)有:
1) c#語言自c/c++演變而來。但是,它是完全按照面向?qū)ο蟮乃枷雭碓O(shè)計(jì)的,并保證了類型的安全性。
2) c#簡(jiǎn)化了c++在類、名稱空間、方法重載和異常處理等方面的使用。摒棄了c++的復(fù)雜性,使它更易用、更少出錯(cuò)。
3) c#減少了c++的一些特性,不再有宏、多重繼承。特別對(duì)企業(yè)開發(fā)者來說,上述功能只會(huì)產(chǎn)生更多的麻煩而不是效益。
4) c#采用嚴(yán)格的類型安全、版本控制、垃圾收集(garbage collect)等等。所有的這些功能的目標(biāo)都是瞄準(zhǔn)了開發(fā)面向組件的軟件開發(fā)。
5) c#中不再有“::”、“.”、和“->”操作符,僅使用單個(gè)操作符“.”。
6) c#使用統(tǒng)一的類型系統(tǒng),摒棄了c++多變的類型系統(tǒng)。
7) 在c#中,不能在類的外部定義全局函數(shù)、變量或者是常量等。所有的東西都必須封裝在類中,包括實(shí)例成員或靜態(tài)成員。從而使c#代碼更加易讀且有助于減少潛在的命名沖突。
8) 在c#中,不能使用沒有初始化的變量。從而避免了由于使用不經(jīng)初始化的變量而導(dǎo)致的計(jì)算結(jié)果錯(cuò)誤。
2. c#語言中,值類型和引用類型有何不同?
【解答】
值類型和引用類型的區(qū)別在于,值類型的變量直接存放實(shí)際的數(shù)據(jù),而引用類型的變量存放的則是數(shù)據(jù)的地址,即對(duì)象的引用。
值類型變量直接把變量的值保存在堆棧中,引用類型的變量把實(shí)際數(shù)據(jù)的地址保存在堆棧中,而實(shí)際數(shù)據(jù)則保存在堆中。注意,堆和堆棧是兩個(gè)不同的概念,在內(nèi)存中的存儲(chǔ)位置也不相同,堆一般用于存儲(chǔ)可變長(zhǎng)度的數(shù)據(jù),如字符串類型;而堆棧則用于存儲(chǔ)固定長(zhǎng)度的數(shù)據(jù),如整型類型的數(shù)據(jù)int(每個(gè)int變量占用四個(gè)字節(jié))。由數(shù)據(jù)存儲(chǔ)的位置可以得知,當(dāng)把一個(gè)值變量賦給另一個(gè)值變量時(shí),會(huì)在堆棧中保存兩個(gè)完全相同的值;而把一個(gè)引用變量賦給另一個(gè)引用變量,則會(huì)在堆棧中保存對(duì)同一個(gè)堆位置的兩個(gè)引用,即在堆棧中保存的是同一個(gè)堆的地址。在進(jìn)行數(shù)據(jù)操作時(shí),對(duì)于值類型,由于每個(gè)變量都有自己的值,因此對(duì)一個(gè)變量的操作不會(huì)影響到其它變量;對(duì)于引用類型的變量,對(duì)一個(gè)變量的數(shù)據(jù)進(jìn)行操作就是對(duì)這個(gè)變量在堆中的數(shù)據(jù)進(jìn)行操作,如果兩個(gè)引用類型的變量引用同一個(gè)對(duì)象,實(shí)際含義就是它們?cè)诙褩V斜4娴亩训牡刂废嗤虼藢?duì)一個(gè)變量的操作就會(huì)影響到引用同一個(gè)對(duì)象的另一個(gè)變量。
3. 結(jié)構(gòu)和類的區(qū)別是什么?
【解答】
1) 結(jié)構(gòu)是一個(gè)值類型,保存在棧上,而類是一個(gè)引用類型,保存在受管制的堆上。
2) 對(duì)結(jié)構(gòu)中的數(shù)據(jù)進(jìn)行操作比對(duì)類或?qū)ο笾械臄?shù)據(jù)進(jìn)行操作速度要快。
3) 一般用結(jié)構(gòu)存儲(chǔ)多種類型的數(shù)據(jù),當(dāng)創(chuàng)建一個(gè)很多類或?qū)ο蠊灿玫男⌒蛯?duì)象時(shí),使用結(jié)構(gòu)效率更高。
4. c#中的數(shù)組類型有何特點(diǎn)?
【解答】
1) 數(shù)組一般用于存儲(chǔ)同一種類型的數(shù)據(jù),包括object類型。
2) 數(shù)組是一種引用類型,而不是值類型。
3) c#中除了可以有一維數(shù)組、多維數(shù)組外,還有交錯(cuò)型數(shù)組。
5. c#中不同整型之間進(jìn)行轉(zhuǎn)換的原則是什么?
【解答】
在整型之間進(jìn)行轉(zhuǎn)換時(shí),小范圍類型可以隱式轉(zhuǎn)換為大范圍類型,但大范圍類型轉(zhuǎn)換為小范圍類型時(shí)需要使用顯式轉(zhuǎn)換。
6. 簡(jiǎn)述裝箱和拆箱的過程。
【解答】
裝箱是將值類型隱式地轉(zhuǎn)換為object類型或者轉(zhuǎn)換為由該值類型實(shí)現(xiàn)了的接口類型。裝箱一個(gè)數(shù)值會(huì)為其分配一個(gè)對(duì)象實(shí)例,并把該數(shù)值拷貝到新對(duì)象中。拆箱是顯式地把object類型轉(zhuǎn)換成值類型,或者把值類型實(shí)現(xiàn)了的接口類型轉(zhuǎn)換成該值類型。
7. 下列寫法哪些是錯(cuò)誤的?為什么?
1) if (nmyvalue1=5) i=1;
2) if(nmyvalue2==1)i=1;
3) int[] myint={1,2,3};
foreach(int test in myint)
{
test++;
console.writeline(temp);
}
4) int[] myint1={1,2,3};
foreach(int test in myint1)
{
console>writeline(test);
}
【解答】
1) 錯(cuò)誤。if中的條件表達(dá)式結(jié)果不是布爾型。
2) 正確。
3) 錯(cuò)誤一:temp沒有定義。
錯(cuò)誤二:在foreach塊內(nèi),test作為枚舉成員是只讀的,不能使用test++修改其值。
4) 錯(cuò)誤。console后應(yīng)該是點(diǎn),而不應(yīng)該是大于號(hào)。
8. 錯(cuò)誤和異常有什么區(qū)別,為什么要進(jìn)行異常處理,用于異常處理的語句有哪些?
【解答】
錯(cuò)誤是指在執(zhí)行代碼過程中發(fā)生的事件,它中斷或干擾代碼的正常流程并創(chuàng)建異常對(duì)象。當(dāng)錯(cuò)誤中斷流程時(shí),該程序?qū)L試尋找異常處理程序(一段告訴程序如何對(duì)錯(cuò)誤做出響應(yīng)的代碼),以幫助程序恢復(fù)流程。換句話說,錯(cuò)誤是一個(gè)事件,而異常是該事件創(chuàng)建的對(duì)象。
當(dāng)使用短語“產(chǎn)生異常”時(shí),表示存在問題的方法發(fā)生錯(cuò)誤,并創(chuàng)建異常對(duì)象(包含該錯(cuò)誤的信息及發(fā)生的時(shí)間和位置)來響應(yīng)該錯(cuò)誤。導(dǎo)致出現(xiàn)錯(cuò)誤和隨后異常的因素包括用戶錯(cuò)誤、資源失敗和編程邏輯失敗。這些錯(cuò)誤與代碼實(shí)現(xiàn)特定任務(wù)的方法有關(guān),而與該任務(wù)的目的無關(guān)。
如果不進(jìn)行異常處理,即不對(duì)錯(cuò)誤做出響應(yīng),程序的健壯性就會(huì)大打折扣,甚至無法保證正常運(yùn)行,所以必須要進(jìn)行異常處理。
用于異常處理的語句有:try-catch語句、try-catch-finally語句、throw語句。
9. 編寫一個(gè)控制臺(tái)應(yīng)用程序,輸出1到5的平方值,要求:
1) 用for語句實(shí)現(xiàn)。
2) 用while語句實(shí)現(xiàn)。
3) 用do-while語句實(shí)現(xiàn)。
【解答】
10. 編寫一個(gè)控制臺(tái)應(yīng)用程序,要求用戶輸入5個(gè)大寫字母,如果用戶輸入的信息不滿足要求,提示幫助信息并要求重新輸入。
【解答】
11. 編寫一個(gè)控制臺(tái)應(yīng)用程序,要求完成下列功能。
1) 接收一個(gè)整數(shù)n。
2) 如果接收的值n為正數(shù),輸出1到n間的全部整數(shù)。
3) 如果接收的值為負(fù)值,用break或者return退出程序。
4) 轉(zhuǎn)到(1)繼續(xù)接收下一個(gè)整數(shù)。
【解答】
12. 編寫一個(gè)控制臺(tái)應(yīng)用程序,求1000之內(nèi)的所有“完數(shù)”。所謂“完數(shù)”是指一個(gè)數(shù)恰好等于它的所有因子之和。例如,6是完數(shù),因?yàn)?=1+2+3。
【解答】
新聞熱點(diǎn)
疑難解答
圖片精選