小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

125個(gè)基本的C#面試問(wèn)答

 goldbomb 2014-08-06

下文是125個(gè)基本的C#面試問(wèn)答清單。這些面試問(wèn)題簡(jiǎn)單、直接了當(dāng),涵蓋了C#最基本的概念,大部分和面向?qū)ο蟮母拍钕嚓P(guān)。所以如果你在準(zhǔn)備C#面試,我建議你必須掌握這125個(gè)基本的C#面試問(wèn)答來(lái)復(fù)習(xí)你的C#概念。那么現(xiàn)在來(lái)看看這125個(gè)基本的C#面試問(wèn)答清單吧。

1. 什么是C#?

C#(發(fā)音”C sharp”)是一種簡(jiǎn)單、有別于傳統(tǒng)的、面向?qū)ο?、類型安全的編程語(yǔ)言。C和C++程序員很快就會(huì)熟悉它。C#中結(jié)合了高生產(chǎn)率的快速應(yīng)用開(kāi)發(fā)(RAD)語(yǔ)言。

2. C#的有哪些注釋類型?

C#中有三種注釋類型。
單行(//)
多行(/* */)
Page/XML 注釋(///)。

3. C#.NET中使用的命名空間有哪些?

命名空間是類型的邏輯分組。
using System;
using System.Collections.Generic;
using System.Windows.Forms;

4. C#有哪些特點(diǎn)?

C#有以下特點(diǎn):

簡(jiǎn)單
類型安全
靈活
面向?qū)ο?br>兼容
持久化
互操作性
有別于傳統(tǒng)

5. 繼承有哪些不同的類別?

在面向?qū)ο缶幊讨欣^承的四種類型:

單繼承:包括一個(gè)基類和一個(gè)派生類。

多層繼承(Hierarchical inheritance) :包括一個(gè)基類和繼承自同一個(gè)基類的派生類。

多級(jí)繼承(Multilevel inheritance):包括從一個(gè)派生類派生出來(lái)的類。

多重繼承(Multiple inheritance):包括多個(gè)基類和一個(gè)派生類。

6. 面向?qū)ο缶幊痰幕靖拍钍鞘裁矗?/strong>

有必要理解一些在面向?qū)ο缶幊讨袕V泛使用的概念。它們包括:

對(duì)象

數(shù)據(jù)抽象和封裝
繼承
多態(tài)性
動(dòng)態(tài)綁定
信息傳遞。

7. 你可以繼承多個(gè)接口嗎?

可以的。在C#中可能繼承多個(gè)接口。

8. 什么是繼承?

繼承是從一個(gè)已經(jīng)存在的類中派生出來(lái)的新類。

9. Define scope?定義作用域?

作用域指的是代碼中一個(gè)變量可以被訪問(wèn)的區(qū)域。

10. public、staticvoid之間的區(qū)別是什么?

public:關(guān)鍵字public是訪問(wèn)修飾符,用來(lái)告訴C#編譯器主(Main)方法可以被任何人調(diào)用。

static:關(guān)鍵字static表明主(Main)方法是一個(gè)全局方法,不需要穿件類實(shí)例即可訪問(wèn)。編譯器儲(chǔ)存該方法的地址作為切入點(diǎn),并利用這個(gè)信息在任何對(duì)象創(chuàng)建之前開(kāi)始執(zhí)行它。

void:關(guān)鍵字void是一個(gè)類型修飾符表明主(Main)方法不返回任何值。

11. C#中的修飾符有哪些?

Abstract
Sealed
Virtual
Const
Event
Extern
Override
Readonly
Static
New

12. C#中訪問(wèn)修飾符的種類有哪些?

C#中的訪問(wèn)修飾符是:

public
protect
private
internal
internal protect

13. 什么是裝箱和拆箱?

變量值類型隱式轉(zhuǎn)換為引用類型成為裝箱,例如integer到object的類型轉(zhuǎn)換。

引用類型變量轉(zhuǎn)換回值類型成為拆箱。

14. 對(duì)象是什么?

對(duì)象是類的實(shí)例。對(duì)象的創(chuàng)建使用new操作。一個(gè)類在內(nèi)存中創(chuàng)建一個(gè)對(duì)象,將包含特定對(duì)象的值和行為(或者方法)的信息。

15. C#中有哪些類型的數(shù)組?

一維數(shù)組(Single-Dimensional)
多維數(shù)組(Multidimensional)
交錯(cuò)數(shù)組(Jagged arrays)。

16. 對(duì)象和實(shí)例之間的區(qū)別是什么?

用戶定義的類型的實(shí)例稱為一個(gè)對(duì)象。我們可以從一個(gè)類實(shí)例化很多對(duì)象。

對(duì)象是類的實(shí)例。

17. Define destructors?定義析構(gòu)函數(shù)?

當(dāng)類對(duì)象超出作用域或者被明確刪除的時(shí)候,析構(gòu)函數(shù)被調(diào)用。析構(gòu)函數(shù),顧名思義是用來(lái)銷毀由構(gòu)造函數(shù)創(chuàng)建的對(duì)象的。正如構(gòu)造函數(shù),析構(gòu)函數(shù)是一個(gè)類成員方法,方法名和類名相同,只是由波浪號(hào)開(kāi)頭。

18. 枚舉數(shù)據(jù)類型怎么用?

枚舉類型是另一種用戶定義類型,它提供了一種連接名字為數(shù)字的方式,從而提高了代碼的可理解性。enum關(guān)鍵字自動(dòng)地枚舉一組詞,賦予它們的值為0,1,2并以此類推。

19. 定義構(gòu)造函數(shù)?

構(gòu)造函數(shù)是和它的類同名的成員方法。每當(dāng)創(chuàng)建其關(guān)聯(lián)的類的對(duì)象時(shí)構(gòu)造函數(shù)都會(huì)被調(diào)用。它之所以被稱為構(gòu)造函數(shù)是因?yàn)樗鼧?gòu)造了類的數(shù)據(jù)成員的值。

20. 什么是封裝?

包裝數(shù)據(jù)和功能成為一個(gè)單元(稱為類)就被稱為封裝。封裝包含并且隱藏對(duì)象信息,例如內(nèi)部數(shù)據(jù)結(jié)構(gòu)和代碼。

21. C#支持多重繼承嗎?

不支持,它不可能。支持多級(jí)繼承。

22. 什么是ENUM?

Enum用于定義常量。

23. 數(shù)據(jù)集是什么?

數(shù)據(jù)集(DataSet)是從任何數(shù)據(jù)源載入數(shù)據(jù)的內(nèi)存表示。

24. privatepublic關(guān)鍵字的區(qū)別是什么?

Private:關(guān)鍵字private是默認(rèn)訪問(wèn)級(jí)別,并且在所有其他訪問(wèn)級(jí)別中是最嚴(yán)格的。它給予一個(gè)類型或者類型成員最小的權(quán)限。私有成員僅僅在聲明其的類體中可以被訪問(wèn)。

Public:關(guān)鍵字public是所有訪問(wèn)級(jí)別中最自由地,沒(méi)有任何訪問(wèn)限制。公共成員的訪問(wèn)不僅可以來(lái)自外部,也可以來(lái)自內(nèi)部,并且可以自由訪問(wèn)定義在類體內(nèi)或者體外的任何成員。

25. 定義多態(tài)性?

多態(tài)性意味著一個(gè)名字,多種形式。它使我們?cè)谝粋€(gè)程序中可以定義一個(gè)以上相同名字的方法。它讓我們重載操作以便這樣的操作可以對(duì)不同的實(shí)例表現(xiàn)不同的行為。

26. 什么是交錯(cuò)數(shù)組?

交錯(cuò)數(shù)組是元素為數(shù)組的數(shù)組。

交錯(cuò)數(shù)組元素的維度和大小可以不同。

交錯(cuò)數(shù)組有時(shí)稱為“數(shù)組的數(shù)組”。

27. 什么是抽象基類?

抽象類是被設(shè)計(jì)為專門用于作為基類的類。抽象類至少還有一個(gè)純虛方法。

28. 方法重寫和方法重載有什么區(qū)別?

當(dāng)重寫一個(gè)方法時(shí),你改變了派生類中方法的行為。重載方法只涉及在類中另一個(gè)同名的方法。

29. refout參數(shù)之間的區(qū)別是什么?

傳遞給ref參數(shù)的參數(shù)必須先初始化。與此相比,對(duì)out參數(shù)來(lái)說(shuō),在參數(shù)傳遞給out參數(shù)之前不需要顯示初始化。

30. C#using語(yǔ)句怎么用?

using語(yǔ)句通常是獲取資源,執(zhí)行語(yǔ)句,然后釋放該資源。

31. 什么是序列化?

序列化(Serialization)是將對(duì)象轉(zhuǎn)換為字節(jié)流的過(guò)程。

反序列化(De-serialization)是從字節(jié)流創(chuàng)建對(duì)象這樣相反的過(guò)程。

序列化/反序列化常用于傳遞對(duì)象。

32. 結(jié)構(gòu)和類之間有什么區(qū)別?

結(jié)構(gòu)是值類型,類是引用類型。

結(jié)構(gòu)不能有構(gòu)造函數(shù)和析構(gòu)函數(shù)。

類可以同時(shí)有構(gòu)造函數(shù)和析構(gòu)函數(shù)。

結(jié)構(gòu)不支持繼承,而類支持繼承。

33. 類和接口之間有什么區(qū)別?

(Class)是對(duì)象的邏輯表示。它是數(shù)據(jù)集合和相關(guān)子過(guò)程的定義。

接口(Interface)也是一個(gè)類,包含沒(méi)有任何方法體定義的方法。類不支持多重繼承,但是接口支持。

34. 什么是委托?

委托是類型安全,面向?qū)ο蟮暮瘮?shù)指針的實(shí)現(xiàn),并且在許多一個(gè)組件需要回調(diào)到使用它的組件這樣的情況下使用。

35. 什么是認(rèn)證與授權(quán)?

認(rèn)證是識(shí)別用戶的過(guò)程。認(rèn)證是以證書(用戶名和密碼)來(lái)識(shí)別/驗(yàn)證用戶。

授權(quán)在認(rèn)證之后執(zhí)行。授權(quán)是一個(gè)基于這些用戶身份授予訪問(wèn)權(quán)限的過(guò)程。

授權(quán)允許用戶對(duì)特定資源的訪問(wèn)。

36. 什么是基類?

類聲明可以通過(guò)類名加一個(gè)冒號(hào)和基類名來(lái)指定基類。省略基類說(shuō)明等同于從object類派生。

37. “this”可以在靜態(tài)方法中用嗎?

不,‘This’不能在靜態(tài)方法中使用。僅僅只有靜態(tài)變量/方法可以在靜態(tài)方法中使用。

38. constants、readonlystatic之間的區(qū)別是什么?

Constants: 值不能變。

Read-only: 值在類的構(gòu)造函數(shù)中僅僅初始化一次。

Static: 值可以被初始化一次。

39. C#中支持哪些語(yǔ)句類型?

C#支持的幾種不同的語(yǔ)句類型是

塊語(yǔ)句
聲明語(yǔ)句
表達(dá)式語(yǔ)句
選擇語(yǔ)句
迭代語(yǔ)句
跳轉(zhuǎn)語(yǔ)句
異常處理語(yǔ)句
檢查和未檢查
Lock語(yǔ)句

40. 什么是接口類?

它是一個(gè)抽象類,所有公共抽象方法必須要在其繼承類中實(shí)現(xiàn)。

41. 什么是值類型和引用類型?

值類型存儲(chǔ)在堆棧中。
例如: bool, byte, chat, decimal, double, enum, float, int, long, sbyte, short, strut, uint, ulong, ushort。

引用類型存儲(chǔ)在托管堆中。
例如: class, delegate, interface, object, string。

42. 關(guān)鍵字stringSystem.String類之間有什么區(qū)別?

關(guān)鍵字string是System.String類的別名。所以,System.String和關(guān)鍵字string是一樣的,你可以使用任何你喜歡的命名約定。String類提供了許多方法用于安全創(chuàng)建,操作和比較字符串。

43. C#中提供的兩種數(shù)據(jù)類型是什么?

值類型
引用類型

44. 有哪些緩存的種類?

有三種類型的緩存:

輸出緩存(Output Caching):存儲(chǔ)asp.net頁(yè)面的應(yīng)答信息。

片段緩存(Fragment Caching):僅緩存/存儲(chǔ)部分頁(yè)面內(nèi)容(用戶控制)。

數(shù)據(jù)緩存(Data Caching):為了性能通過(guò)編程的方式來(lái)緩存對(duì)象。

45. 自定義控件和用戶控件之間的區(qū)別是什么?

自定義控件是編譯后的代碼(Dlls),容易使用,創(chuàng)建困難,可以放在工具箱。拖拉使用的控件。

屬性可以直觀地在設(shè)計(jì)時(shí)指定??梢员欢鄠€(gè)應(yīng)用程序使用(如果共享Dlls),即使是私有的也能拷貝到web應(yīng)用程序的bin目錄,添加引用和使用。通常是用來(lái)為獨(dú)立的消費(fèi)應(yīng)用程序提供公用功能。

用戶控件和ASP的include文件,輕松創(chuàng)建,不能放置在箱中來(lái)拖拉放置它。用戶控件在單個(gè)應(yīng)用程序文件之間共享。

46. 什么是方法?

方法是由對(duì)象或者類執(zhí)行來(lái)實(shí)現(xiàn)計(jì)算或者操作的成員。靜態(tài)方法通過(guò)類訪問(wèn)。實(shí)例方法通過(guò)類的實(shí)例來(lái)訪問(wèn)。

47. 什么是域?

域是類或者類的實(shí)例相關(guān)的變量。

48. 什么是事件?

事件是使一個(gè)類或?qū)ο竽軌蛱峁┩ㄖ某蓡T。事件聲明像域聲明一樣,除了聲明包含event關(guān)鍵字并且類型必須為委托類型。

49.什么是文本和它們的類型?

文本是程序分配給變量的值常量。C#支持的幾種文本類型是

整數(shù)(Integer literals)
實(shí)數(shù)(Real literals)
布爾值(Boolean literals)
單字符(Single character literals)
字符串(String literals)
反斜線(Backslash character literals)

50. 值類型和引用類型的區(qū)別是什么?

值類型存儲(chǔ)在堆棧上,是一個(gè)變量的值賦值給另一個(gè)變量。

引用類型存儲(chǔ)在托管堆上,是兩個(gè)引用變量之間的發(fā)生賦值。

51. C#有什么特性?

C#是一個(gè)簡(jiǎn)單而強(qiáng)大的編程語(yǔ)言,用于編寫企業(yè)版的應(yīng)用程序。
它是C++和VB的混合體。它保留了許多C++特性,如語(yǔ)句,表達(dá)式和運(yùn)算符并結(jié)合了VB的生產(chǎn)力。

C#幫助開(kāi)發(fā)者輕易地構(gòu)建網(wǎng)絡(luò)服務(wù),能夠通過(guò)任何語(yǔ)言,任何平臺(tái)來(lái)訪問(wèn)Internet。

C#幫助開(kāi)發(fā)者用更少的代碼完成開(kāi)發(fā),從而在代碼中錯(cuò)誤更少。

C#引入了相當(dāng)大的改進(jìn)和創(chuàng)新,如類型安全,版本控制,事件和垃圾收集這些領(lǐng)域。

52. 錯(cuò)誤的類型是什么?

語(yǔ)法錯(cuò)誤(Syntax error)
邏輯錯(cuò)誤(Logic error)
運(yùn)行時(shí)錯(cuò)誤(Runtime error)

53. breakcontinue語(yǔ)句之間有什么區(qū)別?

break語(yǔ)句是用來(lái)終止當(dāng)前封閉循環(huán)或者它所在的條件語(yǔ)句的。我們已經(jīng)使用break語(yǔ)句跳出switch語(yǔ)句。

continue語(yǔ)句是用來(lái)改變執(zhí)行順序的。和break語(yǔ)句那樣跳出循環(huán)相反,continue語(yǔ)句停止當(dāng)前迭代并且只將控制返回到循環(huán)頂部。

54. 定義命名空間?

命名空間被稱為容器,用來(lái)組織分層的.NET類。

55. 什么是代碼組?

代碼組是一組共享安全上下文的套件。

56. C#中什么是密封類?

sealed修飾符用來(lái)阻止從一個(gè)類派生。如果一個(gè)密封類被指定為另一個(gè)類的基類時(shí)會(huì)發(fā)生編譯時(shí)錯(cuò)誤。

57. 靜態(tài)方法和實(shí)例方法的區(qū)別是什么?

以static修飾符聲明的方法是靜態(tài)方法。靜態(tài)方法不操作具體的實(shí)例,并且只能被靜態(tài)成員訪問(wèn)。

沒(méi)有以static修飾符聲明的方法是實(shí)例方法。實(shí)例方法操作一個(gè)具體的實(shí)例并且可以被靜態(tài)和實(shí)例成員訪問(wèn)。在其上調(diào)用實(shí)例方法的實(shí)例可以像這樣顯示訪問(wèn)。在靜態(tài)方法中這么調(diào)用是錯(cuò)誤的。

58. C#中有哪些變量的類型?

C#中不同的變量類型是:

靜態(tài)變量(static variables)
實(shí)例變量(instance variable)
值參數(shù)(value parameters)
引用參數(shù)(reference parameters)
數(shù)組元素(array elements)
輸出參數(shù)(output parameters)
局部變量(local variables)

59. 方法重載是什么意思?

方法重載允許在同一個(gè)類中的多個(gè)方法有相同的名字,只要它們具有獨(dú)特的簽名。當(dāng)編譯一個(gè)重載方法的調(diào)用時(shí),編譯器使用重載決策決定具體調(diào)用的方法。

60. 什么是參數(shù)?

參數(shù)是用來(lái)傳遞值或者變量引用給方法的。方法的參數(shù)從被調(diào)用方法時(shí)指定的參數(shù)得到它們實(shí)際的值。有四種參數(shù):值參數(shù),引用參數(shù),輸出參數(shù)和參數(shù)數(shù)組。

61. C#是面向?qū)ο蟮恼Z(yǔ)言嗎?

是的,C#和傳統(tǒng)的Java及C++一樣是面向?qū)ο蟮恼Z(yǔ)言。

62. ArrayArraylist之間的區(qū)別是什么?

數(shù)組是相同類型的集合。數(shù)組大小在它聲明的時(shí)候就固定了。鏈表和數(shù)組相似,但它沒(méi)有固定的大小。

63. C#中有什么特殊的運(yùn)算符?

C#支持一下特殊運(yùn)算符。

is (關(guān)系運(yùn)算符)
as (關(guān)系運(yùn)算符)
typeof (類型運(yùn)算符)
sizeof (大小運(yùn)算符,用于獲取非托管類的大小)
new (對(duì)象運(yùn)算符)
.dot (成員訪問(wèn)運(yùn)算符)
checked (溢出檢查)
unchecked?(防止溢出檢查)

64. C#中運(yùn)算符的含義是什么?

運(yùn)算符是界定了對(duì)類實(shí)例應(yīng)用特定的運(yùn)算表達(dá)式內(nèi)涵的成員??梢远x三種類型的運(yùn)算符:一元運(yùn)算符,二元運(yùn)算符和轉(zhuǎn)換運(yùn)算符。所有的運(yùn)算符必須聲明為public和static的。

65. 什么是類型參數(shù)化?

類型參數(shù)化是一個(gè)類型在另一個(gè)值或者類型之上參數(shù)化。

66. 抽象類的特性是什么?

抽象類不能被實(shí)力化,在抽象類上使用new操作符是錯(cuò)誤的。

抽象類允許(但不必要)包含抽象方法和入口。

抽象類不能用scaled修飾符。

67. abstract關(guān)鍵字怎么用?

修飾符abstract是用于類的關(guān)鍵字,以表明這個(gè)類本身不能直接有實(shí)例或者對(duì)象,并且對(duì)于其他類來(lái)說(shuō)它只能是一個(gè)“基類”。

68. goto語(yǔ)句怎么用?

goto語(yǔ)句仍然包含在C#語(yǔ)言中。這個(gè)goto可以用來(lái)從一個(gè)循環(huán)內(nèi)部跳轉(zhuǎn)到外部。但是從循環(huán)外部跳入循環(huán)內(nèi)是不允許的。

69. 控制臺(tái)應(yīng)用程序和窗口應(yīng)用程序有什么區(qū)別?

控制臺(tái)應(yīng)用程序,設(shè)計(jì)用來(lái)在沒(méi)有用戶界面的命令行中運(yùn)行。
窗口應(yīng)用程序,設(shè)計(jì)用來(lái)通過(guò)用戶界面在用戶桌面執(zhí)行。

70. return語(yǔ)句怎么用?

return語(yǔ)句與程序 (方法或者函數(shù))相關(guān)。在執(zhí)行return語(yǔ)句的時(shí)候,系統(tǒng)將控制權(quán)從被調(diào)用程序交給調(diào)用程序。return語(yǔ)句用于兩種目的:

立即返回當(dāng)前執(zhí)行的代碼的調(diào)用者

返回給當(dāng)前執(zhí)行的代碼的調(diào)用者一些值。

71. ArrayLinkedList之間的區(qū)別是什么?

數(shù)組是不關(guān)心彼此元素位置的簡(jiǎn)單數(shù)字序列。他們之間的位置彼此獨(dú)立。增加,刪除或者修改任何數(shù)組元素都是非常容易的。相對(duì)于數(shù)組,鏈表是一個(gè)復(fù)雜的數(shù)字序列。

72. C#throws子句嗎?

不,不像Java,C#不需要開(kāi)發(fā)者指定方法可以拋出的異常。

73. C#支持可變數(shù)目的參數(shù)嗎?

是的,使用params關(guān)鍵字。該參數(shù)指定為特定類型的參數(shù)列表。

74. 可以重寫私有虛方法嗎?

不可以,私有方法不能在類外訪問(wèn)。

75. 什么是多播委托?

每個(gè)委托對(duì)象保持對(duì)一個(gè)單獨(dú)方法的引用。但是,一個(gè)委托對(duì)象保持對(duì)多個(gè)方法的引用并調(diào)用它們是可能的。這樣的委托對(duì)象成為多播委托或者組合委托。

76. 什么是C#獨(dú)有的特性?

XML文檔.

77. C#中使用異常是推薦的嗎?

是的,在.NET框架中異常是推薦的錯(cuò)誤處理機(jī)制。

78. switch語(yǔ)句中break語(yǔ)句是做什么的?

break語(yǔ)句終結(jié)它所在的循環(huán)。它也改變了程序執(zhí)行的流程。

在switch語(yǔ)句中,break語(yǔ)句用在一個(gè)case語(yǔ)句的結(jié)尾處。在C#中break語(yǔ)句是強(qiáng)制性的,避免了一個(gè)case語(yǔ)句流向另一個(gè)case語(yǔ)句。

79. Is C# object oriented?C#是面向?qū)ο蟮膯幔?/strong>

是的,C#和傳統(tǒng)的Java及C++一樣是面向?qū)ο蟮恼Z(yǔ)言。

80. 什么是智能導(dǎo)航?

因?yàn)榉?wù)端驗(yàn)證和頁(yè)面被刷新導(dǎo)致頁(yè)面刷新時(shí),光標(biāo)位置保持不變。

81. CONSTREADONLY的區(qū)別是什么?

都是為了定義常量值。const字段只能在聲明這個(gè)域的時(shí)候初始化。readonly字段可以在聲明時(shí)或者構(gòu)造函數(shù)中定義。

82. C#throws子句嗎?

不,不像Java,C#不需要(甚至不允許)開(kāi)發(fā)者指定方法可以拋出的異常。

83. 方法可以重載的不同方式是什么?

不同的參數(shù)類型,不同的參數(shù)個(gè)數(shù),不同的參數(shù)順序。

84. 事件有返回值嗎?

沒(méi)有,事件沒(méi)有返回類型。

85. 事件是什么?

事件是一個(gè)基于另一個(gè)程序方法執(zhí)行的動(dòng)作。

事件是被對(duì)象或者類使用來(lái)通知其他對(duì)象發(fā)生的事件的委托類型類成員。

事件可以通過(guò)event關(guān)鍵字來(lái)聲明。

86. 什么是標(biāo)識(shí)符?

標(biāo)識(shí)符無(wú)他,它是用來(lái)在程序中唯一識(shí)別各種實(shí)體的名稱。

87. C#中有哪些不同的文本類型?

布爾值: True和False是Boolean類型,分別映射到真和假的狀態(tài)。

整數(shù):用于編寫類型Int,uInt,long和ulong的值。

實(shí)數(shù):用于編寫類型float, double和decimal的值。

字符:代表單字符,通常由有引號(hào)的字符組成,如‘a(chǎn)’。

字符串: C#支持兩種類型的字符串,規(guī)則字符串和原義字符串。規(guī)則字符串由0個(gè)或多個(gè)括在雙引號(hào)中的字符組成,如“116110″。原義字符串由@字符后跟帶雙引號(hào)的字符組成,如@”hello”。

Null: 代表null類型。

88. 什么是數(shù)據(jù)封裝?

數(shù)據(jù)封裝,也被稱為數(shù)據(jù)隱藏,它是類的實(shí)現(xiàn)細(xì)節(jié)對(duì)保持對(duì)用戶隱匿的機(jī)制。用戶只能通過(guò)執(zhí)行稱為方法的特殊函數(shù)來(lái)對(duì)隱藏了成員的類執(zhí)行一組有限的操作。

89. 可以重寫私有虛方法嗎?

不可以,私有方法不能在類外訪問(wèn)。

90. 子程序和函數(shù)的主要區(qū)別是什么?

子程序沒(méi)有返回值,而函數(shù)有。

91. C#C++的區(qū)別是什么?

C#不支持#include語(yǔ)句。它只用using語(yǔ)句。

C#中,類定義在最后不使用分號(hào)。

C#不支持多重繼承。

數(shù)據(jù)類型的顯示轉(zhuǎn)換在C#中比C++中安全很多。

C#中switch也可用于字符串值。

命令行參數(shù)數(shù)組的行為在C#中和C++中不一樣。

92. 什么是嵌套類?

嵌套類是類中的類。

嵌套類是聲明發(fā)生在另一個(gè)類或者接口里面的任何類。

93. 可以給靜態(tài)構(gòu)造函數(shù)參數(shù)嗎?

不可以,靜態(tài)構(gòu)造函數(shù)不可以有參數(shù)。

94. C#中,字符串是值類型還是引用類型?

字符串是對(duì)象(引用類型)。

95. C#提供拷貝構(gòu)造函數(shù)嗎?

不,C#不提供拷貝構(gòu)造函數(shù)。

96. 類或者結(jié)構(gòu)可以有多個(gè)構(gòu)造函數(shù)嗎?

可以,類或者結(jié)構(gòu)可以有多個(gè)構(gòu)造函數(shù)。C#中構(gòu)造函數(shù)可以被重載。

97. 可以創(chuàng)建接口的實(shí)例嗎?

不可以,你不可以創(chuàng)建接口的實(shí)例。

98. 接口可以包含字段嗎?

不可以,接口不能包含字段。

99. 類可以有靜態(tài)構(gòu)造函數(shù)嗎?

是的,類可以有靜態(tài)構(gòu)造函數(shù)。靜態(tài)構(gòu)造函數(shù)在任何靜態(tài)字段被訪問(wèn)之前被立即自動(dòng)調(diào)用,并且通常用來(lái)初始化靜態(tài)類成員。它在第一個(gè)實(shí)例被創(chuàng)建或者任何靜態(tài)成員被引用之前自動(dòng)調(diào)用。靜態(tài)構(gòu)造函數(shù)在實(shí)例構(gòu)造函數(shù)之前調(diào)用。一個(gè)例子如下所示。

100. C#中委托的主要作用是什么?

委托主要用于定義回調(diào)方法。

101. 投影(Shadowing)和重寫(overriding)的區(qū)別是什么?

重寫僅僅重定義實(shí)現(xiàn)而投影重定義整個(gè)元素。

重寫派生類可以通過(guò)“ME”關(guān)鍵字引用父類元素,但投影中你可以通過(guò)”MYBASE”訪問(wèn)父類元素。

102. 事件可以用訪問(wèn)修飾符嗎?

可以,你可以在事件中用訪問(wèn)修飾符。你可以對(duì)事件使用portected關(guān)鍵字,這樣只允許繼承類訪問(wèn)。你可以使用private修飾事件,僅可以供當(dāng)前類對(duì)象訪問(wèn)。

103. 為什么在代碼中用virtual關(guān)鍵字?

代碼中Virtual關(guān)鍵字是用來(lái)定義可以在派生類中重寫的方法和屬性的。

104. 什么是構(gòu)造函數(shù)和析構(gòu)函數(shù)?

構(gòu)造函數(shù)和析構(gòu)函數(shù)是特殊的方法。

構(gòu)造函數(shù)和析構(gòu)函數(shù)是每個(gè)類的特殊方法。

每個(gè)類都有自己的構(gòu)造函數(shù)和析構(gòu)函數(shù),并且在類實(shí)例被創(chuàng)建或者銷毀時(shí)自動(dòng)調(diào)用。

每當(dāng)你訪問(wèn)類的時(shí)候,構(gòu)造函數(shù)就初始化所有類成員。當(dāng)對(duì)象不想再需要的時(shí)候,析構(gòu)函數(shù)就銷毀它們。

105. 我們?cè)趺匆种?/strong>finalize方法?

GC.SuppressFinalize()。

106. C#支持可變數(shù)目的參數(shù)嗎?

是的,使用params關(guān)鍵字。

該參數(shù)指定為特定類型的參數(shù)列表,例如,int。為了最大的靈活性,類型可以是object。

使用這種方法的標(biāo)準(zhǔn)例子是System.console.writeLine()。

107. 哪個(gè)方法用來(lái)啟動(dòng)一個(gè)線程?
Start。

108. 什么是泛型?

泛型幫助我們創(chuàng)建靈活的強(qiáng)類型集合。

泛型基本上從數(shù)據(jù)類型中分離了邏輯,以保持更好的可重用性,更好的可維護(hù)性等等。

109. 有哪些不同種類的多態(tài)性?

有兩種類型的多態(tài),它們是:

編譯時(shí)多態(tài)性

運(yùn)行時(shí)多態(tài)性

110. 編譯時(shí)多態(tài)性和運(yùn)行時(shí)多態(tài)性的區(qū)別是什么?

編譯時(shí)多態(tài)性

編譯時(shí)多態(tài)性也被稱為方法重載。

方法重載是指有兩個(gè)或更多同名但含有不同簽名的方法。

運(yùn)行時(shí)多態(tài)性

運(yùn)行時(shí)多態(tài)性也被稱為方法重寫。

方法重寫是指有兩個(gè)或更多的同名方法,含有相同的方法簽名但對(duì)應(yīng)不同的實(shí)現(xiàn)。

111. 哪一個(gè)命名空間使XML中多線程編程可行?

System.Threading。

112. C#中可以聲明一個(gè)靜態(tài)塊嗎?

不可以,因?yàn)镃#不支持靜態(tài)塊,但它支持靜態(tài)方法。

113. 方法可以聲明為密封(sealed)嗎?

在C#中方法不可以聲明為sealed。但當(dāng)我們?cè)谂缮愔貙懸粋€(gè)方法的時(shí)候,我們可以將重寫的方法定義為sealed。通過(guò)其sealed,我們就可以避免對(duì)該方法的進(jìn)一步重寫。

114. C#中用什么命令來(lái)實(shí)現(xiàn)屬性?

C#中用get和set修飾符來(lái)實(shí)現(xiàn)屬性。

115. 什么是靜態(tài)成員?

定義為靜態(tài)的成員,可以從類級(jí)別上直接調(diào)用,而不是從類實(shí)例上調(diào)用。

116. C#中繼承一個(gè)類的語(yǔ)法是什么?

當(dāng)一個(gè)類從另一個(gè)類派生時(shí),基類的成員就變?yōu)榕缮某蓡T。

在訪問(wèn)基類的成員所使用的訪問(wèn)修飾符指定了派生類中的基類成員的訪問(wèn)狀態(tài)。

C#中從另一個(gè)類繼承類的語(yǔ)法如下:

class MyNewClass : MyBaseClass

117. C#while循環(huán)和do while循環(huán)的基本區(qū)別是什么?

while循環(huán)在一開(kāi)始測(cè)試它的條件,這意味著如果條件求值為真,封閉的語(yǔ)句塊執(zhí)行0或者更多次。do while循環(huán)至少遍歷一次語(yǔ)句塊然后在最后才檢查條件。

118. 子程序和函數(shù)的主要區(qū)別是什么?

子程序沒(méi)有返回值,而函數(shù)有。

119. C#中什么是密封類?

sealed修飾符用來(lái)阻止從一個(gè)類派生。如果一個(gè)密封類被指定為另一個(gè)類的基類時(shí)會(huì)發(fā)生編譯時(shí)錯(cuò)誤。

120.類和接口的區(qū)別是什么?

抽象類可以實(shí)現(xiàn)它的一些成員,但接口不能實(shí)現(xiàn)它的任何成員。

接口不能有字段,而抽象類可以有字段。

接口僅可以從另一個(gè)接口繼承并且不能繼承抽象類,而抽象類可以繼承另一個(gè)抽象類或另一個(gè)接口。

類可以同時(shí)繼承多個(gè)接口,而類不能同時(shí)繼承多個(gè)類。

抽象類的成員可以定義訪問(wèn)修飾符而接口成員不能定義訪問(wèn)修飾符。

121. 抽象方法和虛方法之間的區(qū)別是什么?

抽象方法不提供實(shí)現(xiàn),并且強(qiáng)制派生類重寫該方法(除非派生類也是個(gè)抽象類),而虛方法可以有實(shí)現(xiàn)并且在派生類中重寫與否是可選的。因此虛方法可以實(shí)現(xiàn)并提供了派生類重寫的選擇。抽象方法不能提供實(shí)現(xiàn)并且強(qiáng)制派生類重寫該方法。

122. 什么是靜態(tài)方法?

只要方法不試圖訪問(wèn)任何實(shí)例數(shù)據(jù)或者其他實(shí)例方法,那么聲明它為靜態(tài)的是可能的。

123. 什么是New修飾符?

new修飾符隱藏了基類的成員。C#僅僅支持簽名的隱藏。

124. C#getset屬性的優(yōu)勢(shì)是什么?

get屬性訪問(wèn)器用于返回屬性值。

set屬性訪問(wèn)器用來(lái)設(shè)置新的值。

125. constreadonly之間有什么區(qū)別?

const聲明的字段不能使用static修飾符,而readonly可以使用static修飾符。

const字段只能在聲明時(shí)初始化,而readonly可以在聲明時(shí)或在構(gòu)造函數(shù)中初始化。

const字段的值在設(shè)計(jì)時(shí)就計(jì)算出來(lái)了,而readonly的值在運(yùn)行時(shí)計(jì)算。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多