最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

2021UpdateC#.NET筆試題基礎篇

2021-04-16 10:29 作者:朝夕教育  | 我要投稿

1.C#中堆和棧的區(qū)別?

棧:由編譯器自動分配、釋放。在函數(shù)體中定義的變量通常在棧上。堆:一般由程序員分配釋放。用new、malloc等分配內(nèi)存函數(shù)分配得到的就是在堆上。存放在棧中時要管存儲順序,保持著先進后出的原則,他是一片連續(xù)的內(nèi)存域,系統(tǒng)自動分配和維護;堆:是無序的,他是一片不連續(xù)的內(nèi)存域,有用戶自己來控制和釋放,如果用戶自己不釋放的話,當內(nèi)存達到一定的特定值時,通過垃圾回收器(GC)來回收。棧內(nèi)存無需我們管理,也不受GC管理。當棧頂元素使用完畢,立馬釋放。而堆則需要GC清理。使用引用類型的時候,一般是對指針進行的操作而非引用類型對象本身。但是值類型則操作其本身

2.C#中的委托是什么?事件是不是一種委托?

委托的本質是一個類,委托是將一種方法作為參數(shù)代入到另一種方法。事件是委托的實例,事件是一種特殊的委托。//比如:onclick事件中的參數(shù)就是一種方法。

3.C#靜態(tài)構造函數(shù)特點是什么?

最先被執(zhí)行的構造函數(shù),且在一個類里只允許有一個無參的靜態(tài)構造函數(shù)執(zhí)行順序:靜態(tài)變量>靜態(tài)構造函數(shù)>實例變量>實例構造函數(shù)

4.CTS、CLS、CLR分別作何解釋

CTS:通用語言系統(tǒng)。CLS:通用語言規(guī)范。CLR:公共語言運行庫。CTS:Common Type System 通用類型系統(tǒng)。Int32、Int16→int、String→string、Boolean→bool。每種語言都定義了自己的類型,.NET通過CTS提供了公共的類型,然后翻譯生成對應的.NET類型。CLS:Common Language Specification 通用語言規(guī)范。不同語言語法的不同。每種語言都有自己的語法,.NET通過CLS提供了公共的語法,然后不同語言翻譯生成對應的.NET語法。CLR:Common Language Runtime 公共語言運行時,就是GC、JIT等這些。有不同的CLR,比如服務器CLR、Linux CLR(Mono)、Silverlight CLR(CoreCLR)。相當于一個發(fā)動機,負責執(zhí)行IL。

5.C#中什么是值類型與引用類型?

值類型:struct、enum、int、float、char、bool、decimal引用類型:class、delegate、interface、array、object、string

6.請詳述在C#中類(class)與結構(struct)的異同?

class可以被實例化,屬于引用類型,class可以實現(xiàn)接口和單繼承其他類,還可以作為基類型,是分配在內(nèi)存的堆上的struct屬于值類型,不能作為基類型,但是可以實現(xiàn)接口,是分配在內(nèi)存的棧上的.

7.new關鍵字的作用

運算符:創(chuàng)建對象實例修飾符:在派生類定義一個重名的方法,隱藏掉基類方法約束:泛型約束定義,約束可使用的泛型類型

8.int?和int有什么區(qū)別

int?為可空類型,默認值可以是nullint默認值是0int?是通過int裝箱為引用類型實現(xiàn)

9.C#中值傳遞與引用傳遞的區(qū)別是什么?

值傳遞時,系統(tǒng)首先為被調用方法的形參分配內(nèi)存空間,并將實參的值按位置一一對應地復制給形參,此后,被調用方法中形參值得任何改變都不會影響到相應的實參;

引用傳遞時,系統(tǒng)不是將實參本身的值復制后傳遞給形參,而是將其引用值(即地址值)傳遞給形參,因此,形參所引用的該地址上的變量與傳遞的實參相同,方法體內(nèi)相應形參值得任何改變都將影響到作為引用傳遞的實參。

簡而言之,按值傳遞不是值參數(shù)是值類型,而是指形參變量會復制實參變量,也就是會在棧上多創(chuàng)建一個相同的變量。而按引用傳遞則不會。可以通過 ref 和 out 來決定參數(shù)是否按照引用傳遞。

10.C#中參數(shù)傳遞 ref 與 out 的區(qū)別?

(1)ref指定的參數(shù)在函數(shù)調用時必須先初始化,而out不用(2)out指定的參數(shù)在進入函數(shù)時會清空自己,因此必須在函數(shù)內(nèi)部進行初始化賦值操作,而ref不用總結:ref可以把值傳到方法里,也可以把值傳到方法外;out只可以把值傳到方法外注意:string作為特殊的引用類型,其操作是與值類型看齊的,若要將方法內(nèi)對形參賦值后的結果傳遞出來,需要加上ref或out關鍵字。

11.C#中什么是裝箱和拆箱?

裝箱:把值類型轉換成引用類型拆箱:把引用類型轉換成值類型裝箱:對值類型在堆中分配一個對象實例,并將該值復制到新的對象中。(1)第一步:新分配托管堆內(nèi)存(大小為值類型實例大小加上一個方法表指針。(2)第二步:將值類型的實例字段拷貝到新分配的內(nèi)存中。(3)第三步:返回托管堆中新分配對象的地址。這個地址就是一個指向對象的引用了。

拆箱:檢查對象實例,確保它是給定值類型的一個裝箱值。將該值從實例復制到值類型變量中。在裝箱時是不需要顯式的類型轉換的,不過拆箱需要顯式的類型轉換。int i=0;System.Object obj=i; //這個過程就是裝箱!就是將 i 裝箱!int j=(int)obj;//這個過程 obj 拆箱!

12.C#實現(xiàn)多態(tài)的過程中 overload 重載 與override 重寫的區(qū)別?

override 重寫與 overload 重載的區(qū)別。重載是方法的名稱相同。參數(shù)或參數(shù)類型不同,進行多次重載以適應不同的需要override 是進行基類中函數(shù)的重寫。實現(xiàn)多態(tài)。重載:是方法的名稱相同,參數(shù)或參數(shù)類型不同;重載是面向過程的概念。重寫:是對基類中的虛方法進行重寫。重寫是面向對象的概念。

13.C# 中static關鍵字的作用?

對類有意義的字段和方法使用static關鍵字修飾,稱為靜態(tài)成員,通過類名加訪問操作符“.”進行訪問; 對類的實例有意義的字段和方法不加static關鍵字,稱為非靜態(tài)成員或實例成員。注: 靜態(tài)字段在內(nèi)存中只有一個拷貝,非靜態(tài)字段則是在每個實例對象中擁有一個拷貝。而方法無論是否為靜態(tài),在內(nèi)存中只會有一份拷貝,區(qū)別只是通過類名來訪問還是通過實例名來訪問。

14.C# 成員變量和成員函數(shù)前加static的作用?

它們被稱為常成員變量和常成員函數(shù),又稱為類成員變量和類成員函數(shù)。分別用來反映類的狀態(tài)。比如類成員變量可以用來統(tǒng)計類實例的數(shù)量,類成員函數(shù)負責這種統(tǒng)計的動作。不用new

15.C#中索引器的實現(xiàn)過程,是否只能根據(jù)數(shù)字進行索引,請描述一下

C#通過提供索引器,可以象處理數(shù)組一樣處理對象。特別是屬性,每一個元素都以一個get或set方法暴露。索引器不單能索引數(shù)字(數(shù)組下標),還能索引一些HASHMAP的字符串,所以,通常來說,C#中類的索引器通常只有一個,就是THIS,但也可以有無數(shù)個,只要你的參數(shù)列表不同就可以了索引器和返回值無關, 索引器最大的好處是使代碼看上去更自然,更符合實際的思考模式。微軟官方一個示例:索引器允許類或結構的實例按照與數(shù)組相同的方式進行索引。索引器類似于屬性,不同之處在于它們的訪問器采用參數(shù)。在下面的示例中,定義了一個泛型類(class SampleCollection ),并為其提供了簡單的 get 和 set訪問器 方法(作為分配和檢索值的方法)。Program 類為存儲字符串創(chuàng)建了此類的一個實例。

16.C#中 abstract class和interface有什么區(qū)別?

abstract class abstract 聲明抽象類抽象方法,一個類中有抽象方法,那么這個類就是抽象類了。所謂的抽象方法,就是不含主體(不提供實現(xiàn)方法),必須由繼承者重寫。因此,抽象類不可實例化,只能通過繼承被子類重寫。

interface 聲明接口,只提供一些方法規(guī)約,在C#8之前的版本中不提供任何實現(xiàn),在C#9版本也可以支持接口的實現(xiàn);不能用public、abstract等修飾,無字段、常量,無構造函數(shù)

兩者區(qū)別:

1.interface中不能有字段,而abstract class可以有; 2.interface中不能有public等修飾符,而abstract class 可以有。3.interface 可以實現(xiàn)多繼承。

17.C#中用sealed修飾的類有什么特點?

密封,不能繼承。

18.字符串中string str=null和string str=""和string str=string.Empty的區(qū)別

string.Empty相當于“”,Empty是一個靜態(tài)只讀的字段。string str="" ,初始化對象,并分配一個空字符串的內(nèi)存空間 string str=null,初始化對象,不會分配內(nèi)存空間

19.byte b = 'a'; byte c = 1; byte d = 'ab'; byte e = '啊'; byte g = 256; 這些變量有些錯誤是錯在哪里?

本題考查的是數(shù)據(jù)類型能承載數(shù)據(jù)的大小。1byte =8bit,1個漢字=2個byte,1個英文=1個byte=8bit所以bc是對的,deg是錯的。'a'是char類型,a錯誤java byte取值范圍是-128~127, 而C#里一個byte是0~255

20.string和StringBuilder的區(qū)別,兩者性能的比較

都是引用類型,分配再堆上StringBuilder默認容量是16,可以允許擴充它所封裝的字符串中字符的數(shù)量.每個StringBuffer對象都有一定的緩沖區(qū)容量,當字符串大小沒有超過容量時,不會分配新的容量,當字符串大小超過容量時,會自動增加容量。對于簡單的字符串連接操作,在性能上stringbuilder不一定總是優(yōu)于strin因為stringbulider對象的創(chuàng)建也消耗大量的性能,在字符串連接比較少的情況下,過度濫用stringbuilder會導致性能的浪費而非節(jié)約,只有大量無法預知次數(shù)的字符串操作才考慮stringbuilder的使用。從最后分析可以看出如果是相對較少的字符串拼接根本看不出太大差別。Stringbulider的使用,最好制定合適的容量值,否則優(yōu)于默認值容量不足而頻繁的進行內(nèi)存分

21.什么是擴展方法?

一句話解釋,擴展方法使你能夠向現(xiàn)有類型“添加”方法,無需修改類型條件:按擴展方法必須滿足的條件,1.必須要靜態(tài)類中的靜態(tài)方法2.第一個參數(shù)的類型是要擴展的類型,并且需要添加this關鍵字以標識其為擴展方法建議:通常,只在不得已的情況下才實現(xiàn)擴展方法,并謹慎的實現(xiàn)使用:不能通過類名調用,直接使用類型來調用

22. 特性是什么?如何使用?

特性與屬性是完全不相同的兩個概念,只是在名稱上比較相近。Attribute特性就是關聯(lián)了一個目標對象的一段配置信息,本質上是一個類,其為目標元素提供關聯(lián)附加信息,這段附加信息存儲在dll內(nèi)的元數(shù)據(jù),它本身沒什么意義。運行期以反射的方式來獲取附加信息

23.什么叫應用程序域(AppDomain)

一種邊界,它由公共語言運行庫圍繞同一應用程序范圍內(nèi)創(chuàng)建的對象建立(即,從應用程序入口點開始,沿著對象激活的序列的任何位置)。應用程序域有助于將在一個應用程序中創(chuàng)建的對象與在其他應用程序中創(chuàng)建的對象隔離,以使運行時行為可以預知。在一個單獨的進程中可以存在多個應用程序域。應用程序域可以理解為一種輕量級進程。起到安全的作用。占用資源小。

24.byte a =255;a+=5;a的值是多少?

byte的取值范圍是-2的8次方至2的8次方-1,-256至258,a+=1時,a的值時0,a+=5時,a的值是0,所以a+=5時,值是4

25.const和readonly有什么區(qū)別?

都可以標識一個常量。主要有以下區(qū)別:1、初始化位置不同。const必須在聲明的同時賦值;readonly即可以在聲明處賦值;2、修飾對象不同。const即可以修飾類的字段,也可以修飾局部變量;readonly只能修飾類的字段3、const是編譯時常量,在編譯時確定該值;readonly是運行時常量,在運行時確定該值。4、const默認是靜態(tài)的;而readonly如果設置成靜態(tài)需要顯示聲明5、修飾引用類型時不同,const只能修飾string或值為null的其他引用類型;readonly可以是任何類型。

26.分析下面代碼,a、b的值是多少?

string strTmp = "a1某某某";
int a = System.Text.Encoding.Default.GetBytes(strTmp).Length;
int b = strTmp.Length;

分析:一個字母、數(shù)字占一個byte,一個中文占占兩個byte,所以a=8,b=5

27.Strings = new String(“xyz”);創(chuàng)建了幾個String Object?

兩個對象,一個是“xyz”,一個是指向“xyz”的引用對象s。

28.c#可否對內(nèi)存直接操作

C#在unsafe 模式下可以使用指針對內(nèi)存進行操作, 但在托管模式下不可以使用指針,C#NET默認不運行帶指針的,需要設置下,選擇項目右鍵->屬性->選擇生成->“允許不安全代碼”打勾->保存

29.什么是強類型,什么是弱類型?哪種更好些?為什么?

強類型是在編譯的時候就確定類型的數(shù)據(jù),在執(zhí)行時類型不能更改,而弱類型在執(zhí)行的時候才會確定類型。沒有好不好,二者各有好處,強類型安全,因為它事先已經(jīng)確定好了,而且效率高。一般用于編譯型編程語言,如c++,java,c#,pascal等,弱類型相比而言不安全,在運行的時候容易出現(xiàn)錯誤,但它靈活,多用于解釋型編程語言,如javascript等

30.Math.Round(11.5)等於多少? Math.Round(-11.5)等於多少?

Math.Round(11.5)=12Math.Round(-11.5)=-12

31.&和&&的區(qū)別

相同點&和&&都可作邏輯與的運算符,表示邏輯與(and),當運算符兩邊的表達式的結果都為true時,其結果才為true,否則,只要有一方為false,則結果為false。(ps:當要用到邏輯與的時候&是毫無意義,&本身就不是干這個的)

不同點if(loginUser!=null&&string.IsnullOrEmpty(loginUser.UserName))&&具有短路的功能,即如果第一個表達式為false,則不再計算第二個表達式,對于上面的表達式,當loginUser為null時,后面的表達式不會執(zhí)行,所以不會出現(xiàn)NullPointerException如果將&&改為&,則會拋出NullPointerException異常。(ps:所以說當要用到邏輯與的時候&是毫無意義的)

& 是用作位運算的。

總結&是位運算,返回結果是int類型 &&是邏輯運算,返回結果是bool類型

32.i++和++i有什么區(qū)別?

1.i++是先賦值,然后再自增;++i是先自增,后賦值。2.i=0,i++=0,++i=1;Console.WriteLine(++i==i++); 結果位true

33.as和is的區(qū)別

as在轉換的同時判斷兼容性,如果無法進行轉換,返回位null(沒有產(chǎn)生新的對象),as轉換是否成功判斷的依據(jù)是是否位null is只是做類型兼容性判斷,并不執(zhí)行真正的類型轉換,返回true或false,對象為null也會返回false。as比is效率更高,as只需要做一次類型兼容檢查

34.談談final、finally的區(qū)別。

final:不能作為父類被繼承。一個類不能聲明是final,又聲明為abstract。finally:用于try{}catch{}finally{}結構,用于異常處理時執(zhí)行任何清除操作。

35.簡述C#成員修飾符

abstract:指示該方法或屬性沒有實現(xiàn)。

const:指定域或局部變量的值不能被改動。

event:聲明一個事件。

extern:指示方法在外部實現(xiàn)。

override:對由基類繼承成員的新實現(xiàn)。

readonly:指示一個域只能在聲明時以及相同類的內(nèi)部被賦值。

static:指示一個成員屬于類型本身,而不是屬于特定的對象。

virtual:指示一個方法或存取器的實現(xiàn)可以在繼承類中被覆蓋。

36.什么是匿名類,有什么好處?

不用定義、沒有名字的類,使用一次便可丟棄。好處是簡單、隨意、臨時的。

37.說說什么是逐字字符串

在普通字符串中,反斜杠字符是轉義字符。而在逐字字符串(Verbatim Strings)中,字符將被編程器按照原義進行解釋。使用逐字字符串只需在字符串前面加上 @ 符號。

// 逐字字符串:轉義符
var filename = @"c:\temp\newfile.txt";
Console.WriteLine(filenaame);

// 逐字字符串:多行文本
var multiLine = @"This is a
multiline paragraph.";
Console.WriteLine(multiLine);

// 非逐字字符串
var escapedFilename = "c:\temp\newfile.txt";
Console.WriteLine(escapedFilename);

輸出結果:

c:\temp\newfile.txt

This is a
multiline paragraph.

c: ? emp
ewfile.txt

逐字字符串中唯一不被原樣解釋的字符是雙引號。由于雙引號是定義字符串的關鍵字符,所以在逐字字符串中要表達雙引號需要用雙引號進行轉義。

var str = @"""I don't think so"", he said.";
Console.WriteLine(str);

輸出結果:

"I?don't?think?so",?he?said.

在逐字字符串中也可以 $ 符號實現(xiàn)字符串內(nèi)插值。

Testing?\n?1?2?3

輸出結果:

Testing?\n?1?2?3

38.列舉你知道的數(shù)字格式化轉換

可使用“0”和“#”占位符進行補位。“0” 表示位數(shù)不夠位數(shù)就補充“0”,小數(shù)部分如果位數(shù)多了則會四舍五入;“#”表示占位,用于輔助“0”進行補位。如下例:

? ? ? ? ? // “0”描述:占位符,如果可能,填充位
? ? ? ? ? Console.WriteLine(string.Format("{0:000000}", 1234)); // 結果:001234?
? ? ? ? ? // “#”描述:占位符,如果可能,填充位
? ? ? ? ? Console.WriteLine(string.Format("{0:######}", 1234)); // 結果:1234
? ? ? ? ? Console.WriteLine(string.Format("{0:#0####}", 1234)); // 結果:01234
? ? ? ? ? Console.WriteLine(string.Format("{0:0#0####}", 1234)); // 結果:0001234?
? ? ? ? ? // "."描述:小數(shù)點
? ? ? ? ? Console.WriteLine(string.Format("{0:000.000}", 1234)); ? ? ? // 結果:1234.000
? ? ? ? ? Console.WriteLine(string.Format("{0:000.000}", 4321.12543)); // 結果:4321.125

? ? ? ? ? // ","描述:千分表示
? ? ? ? ? Console.WriteLine(string.Format("{0:0,0}", 1234567)); ? //結果:1,234,567

? ? ? ? ? // "%"描述:格式化為百分數(shù)
? ? ? ? ? Console.WriteLine(string.Format("{0:0%}", 1234)); ? ? ? // 結果:123400%
? ? ? ? ? Console.WriteLine(string.Format("{0:#%}", 1234.125)); ? // 結果:123413%
? ? ? ? ? Console.WriteLine(string.Format("{0:0.00%}", 1234)); ? ? // 結果:123400.00%
? ? ? ? ? Console.WriteLine(string.Format("{0:#.00%}", 1234.125)); // 結果:123412.50%

內(nèi)置快捷字母格式化用法

? ? ? ? ? // E-科學計數(shù)法表示
? ? ? ? ? Console.WriteLine((25000).ToString("E")); // 結果:2.500000E+004

? ? ? ? ? // C-貨幣表示,帶有逗號分隔符,默認小數(shù)點后保留兩位,四舍五入
? ? ? ? ? Console.WriteLine((2.5).ToString("C")); // 結果:¥2.50

? ? ? ? ? // D[length]-十進制數(shù)
? ? ? ? ? Console.WriteLine((25).ToString("D5")); // 結果:00025

? ? ? ? ? // F[precision]-浮點數(shù),保留小數(shù)位數(shù)(四舍五入)
? ? ? ? ? Console.WriteLine((25).ToString("F2")); // 結果:25.00

? ? ? ? ? // G[digits]-常規(guī),保留指定位數(shù)的有效數(shù)字,四舍五入
? ? ? ? ? Console.WriteLine((2.52).ToString("G2")); // 結果:2.5

? ? ? ? ? // N-帶有逗號分隔符,默認小數(shù)點后保留兩位,四舍五入
? ? ? ? ? Console.WriteLine((2500000).ToString("N")); // 結果:2,500,000.00

? ? ? ? ? // X-十六進制,非整型將產(chǎn)生格式異常
? ? ? ? ? Console.WriteLine((255).ToString("X")); // 結果

ToString 也可以自定義補零格式化:


? ? ? ? ? Console.WriteLine((15).ToString("000")); ? ? ? ? ? ? // 結果:015
? ? ? ? ? Console.WriteLine((15).ToString("value is 0")); ? ? ? // 結果:value is 15
? ? ? ? ? Console.WriteLine((10.456).ToString("0.00")); ? ? ? ? // 結果:10.46
? ? ? ? ? Console.WriteLine((10.456).ToString("00")); ? ? ? ? ? // 結果:10
? ? ? ? ? Console.WriteLine((10.456).ToString("value is 0.0")); // 結果:value is 10.5

39.說說字符串拼接、字符串內(nèi)插法

將數(shù)組中的字符串拼接成一個字符串:

var parts = new[] { "Foo", "Bar", "Fizz", "Buzz"};
var joined = string.Join(", ", parts);
// joined = "Foo, Bar, Fizz, Buzz"

以下四種方式都可以達到相同的字符串拼接的目的:

string first = "Hello";
stringsecond = "World";
string foo = first + " " + second;
string foo = string.Concat(first, " ", second);
string foo = string.Format("{0} {1}", firstname, lastname);
string foo = $"{firstname} {lastname}";

字符串內(nèi)插法簡單用法:

var name = "World";
? ? ? ? var str =$"Hello, {name}!";
// str = "Hello, World!"

帶日期格式化

var date = DateTime.Now;
var str = $"Today is {date:yyyy-MM-dd}!";

補齊格式化(Padding):

?? ? var number = 42;?
? ? ? ? ? // 向左補齊
? ? ? ? ? var str = $"The answer to life, the universe and everything is {number,5}.";
? ? ? ? ? // str = "The answer to life, the universe and everything is ___42." ('_'表示空格)?
? ? ? ? ? // 向右補齊
? ? ? ? ? var str = $"The answer to life, the universe and everything is ${number,-5}.";
? ? ? ? ? // str = "The answer to life, the universe and everything is 42___."

結合內(nèi)置快捷字母格式化:

var amount = 2.5;
? ? ? ? ? var str = $"It costs {amount:C}";
? ? ? ? ? // str = "¥2.50"?
? ? ? ? ? var number = 42;
? ? ? ? ? var str = $"The answer to life, the universe and everything is {number,5:f1}.";
? ? ? ? ? // str = "The answer to life, the universe and everything is ___42.1"

40.什么是虛函數(shù)?什么是抽象函數(shù)?

虛函數(shù):沒有實現(xiàn)的,可以由子類繼承并重寫的函數(shù)。抽象函數(shù):規(guī)定其非虛子類必須實現(xiàn)的函數(shù),必須被重寫。

41.什么是WebService?

答:Web Service是基于網(wǎng)絡的、分布式的模塊化組件,它執(zhí)行特定的任務,遵守具體的技術規(guī)范,這些規(guī)范使得Web Service能與其他兼容的組件進行互操作。

42.ADO.NET常用對象有哪些?

Connection:主要是開啟程序和數(shù)據(jù)庫之間的連接。沒有利用連接對象將數(shù)據(jù)庫打開,是無法從數(shù)據(jù)庫中取得數(shù)據(jù)的。Close和Dispose的區(qū)別,Close以后還可以Open,Dispose以后則不能再用。

Command:主要可以用來對數(shù)據(jù)庫發(fā)出一些指令,例如可以對數(shù)據(jù)庫下達查詢、新增、修改、刪除數(shù)據(jù)等指令,以及調用存在數(shù)據(jù)庫中的存儲過程等。這個對象是架構在Connection 對象上,也就是Command:對象是通過在Connection對象連接到數(shù)據(jù)源。

DataAdapter:主要是在數(shù)據(jù)源以及DataSet 之間執(zhí)行數(shù)據(jù)傳輸?shù)墓ぷ?,它可以透過Command 對象下達命令后,并將取得的數(shù)據(jù)放入DataSet 對象中。這個對象是架構在Command對象上,并提供了許多配合DataSet 使用的功能。

DataSet:這個對象可以視為一個暫存區(qū)(Cache),可以把從數(shù)據(jù)庫中所查詢到的數(shù)據(jù)保留起來,甚至可以將整個數(shù)據(jù)庫顯示出來,DataSet是放在內(nèi)存中的。DataSet 的能力不只是可以儲存多個Table 而已,還可以透過DataAdapter對象取得一些例如主鍵等的數(shù)據(jù)表結構,并可以記錄數(shù)據(jù)表間的關聯(lián)。DataSet 對象可以說是ADO.NET 中重量級的對象,這個對象架構在DataAdapter對象上,本身不具備和數(shù)據(jù)源溝通的能力;也就是說我們是將DataAdapter對象當做DataSet 對象以及數(shù)據(jù)源間傳輸數(shù)據(jù)的橋梁。DataSet包含若干DataTable、DataTableTable包含若干DataRow。

DataReader:當我們只需要循序的讀取數(shù)據(jù)而不需要其它操作時,可以使用DataReader 對象。DataReader對象只是一次一次向下循序的讀取數(shù)據(jù)源中的數(shù)據(jù),這些數(shù)據(jù)是存在數(shù)據(jù)庫服務器中的,而不是一次性加載到程序的內(nèi)存中的,只能(通過游標)讀取當前行的數(shù)據(jù),而且這些數(shù)據(jù)是只讀的,并不允許作其它的操作。因為DataReader 在讀取數(shù)據(jù)的時候限制了每次只讀取一條,而且只能只讀,所以使用起來不但節(jié)省資源而且效率很好。使用DataReader 對象除了效率較好之外,因為不用把數(shù)據(jù)全部傳回,故可以降低網(wǎng)絡的負載。

43.在ASP.NET中所有的自定義用戶控件都必須繼承自?

Control類

44.在.NET托管代碼總我們不必擔心內(nèi)存泄漏,這是因為有了?

GC 垃圾收集器。

45.什么是MVC模式

MVC(Model View Controller)模型-視圖-控制器

aspx就是View,視圖;Model:DataSet、Reader、對象;Controller:cs代碼。

MVC是典型的平行關系,沒有說誰在上誰在下的關系,模型負責業(yè)務領域的事情,視圖負責顯示的事情,控制器把數(shù)據(jù)讀取出來填充模型后把模型交給視圖去處理。而各種驗證什么的應該是在模型里處理了。它強制性的使應用程序的輸入、處理和輸出分開。MVC最大的好處是將邏輯和頁面分離。

46.能用foreach遍歷訪問的對象的要求

需要實現(xiàn)IEnumerable接口或聲明GetEnumerator方法的類型。

47.什么是反射?

程序集包含模塊,而模塊又包括類型,類型下有成員,反射就是管理程序集,模塊,類型的對象,它能夠動態(tài)的創(chuàng)建類型的實例,設置現(xiàn)有對象的類型或者獲取現(xiàn)有對象的類型,能調用類型的方法和訪問類型的字段屬性。它是在運行時創(chuàng)建和使用類型實例。

48.ORM中的延遲加載與直接加載有什么異同?

延遲加載(Lazy Loading)只在真正需要進行數(shù)據(jù)操作的時候再進行加載數(shù)據(jù),可以減少不必要的開銷。

49.簡述Func與Action的區(qū)別?

Func是有返回值的委托,Action是沒有返回值的委托。

50.23種設計模式分別叫什么名稱,如何分類?

分三類:創(chuàng)建型,行為型,結構型;

創(chuàng)建型包含:1.單例模式2.工廠模式3.建造者模式4.原型模式5.工廠方法模式

行為型包含:1.策略模式2.模板方法模式3.觀察者模式4.迭代子模式5.責任鏈模式6.命令模式7.備忘錄模式8.狀態(tài)模式9.訪問者模式10.中介者模式11.解釋器模式

結構型設計模式包含:1.適配器模式2.裝飾器模式3.代理模式4.外觀模式5.橋接模式6.組合模式7.享元模式



2021UpdateC#.NET筆試題基礎篇的評論 (共 條)

分享到微博請遵守國家法律
辉南县| 濉溪县| 宾川县| 东山县| 开鲁县| 镇雄县| 巴马| 伊金霍洛旗| 凤台县| 土默特右旗| 乌鲁木齐市| 沙河市| 呼玛县| 庆安县| 抚州市| 瓮安县| 阿克苏市| 安西县| 吐鲁番市| 吴江市| 吉安市| 社旗县| 洪湖市| 双流县| 濮阳市| 瑞昌市| 闽清县| 高陵县| 连平县| 鄱阳县| 平谷区| 阜新市| 绥芬河市| 拜城县| 安徽省| 平邑县| 浮梁县| 安泽县| 新和县| 曲水县| 凤台县|