版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1.面向?qū)ο蟮乃枷胫饕ㄊ裁矗?/p>
答:個人認(rèn)為一各程序語言要成為真正的面向?qū)ο蟮某绦蛟O(shè)計語言,它必須符合下列條件:
1抽象(abstraction)一抽象能夠有效地管理一個問題的復(fù)雜性,其作法是劃分出與該問題相
關(guān)的一組對象.
2封裝(Encapsulation)一封裝是指將一個抽象的內(nèi)部實(shí)現(xiàn)隱藏在特定的對象之內(nèi).
3多態(tài)(polymorphism)-多態(tài)會提供相同方法的多種操作方法的多種操作實(shí)作.例如,不同
的對象都會擁有一個Save方法,但是每一個Save方法會執(zhí)行不同的操作.
4繼承(inheritance)—VisualC#2005最令人興奮之處就是其繼承特性.vc#2005則提供了真
正的方法繼承,因此您可以重復(fù)使用一個類的實(shí)例.
2.什么是ASP.net中的用戶控件
自己動手作自己的控件來取代.NET提供的控件。這種控件就是用戶控件。后綴
為.asex
3.什么叫應(yīng)用程序域?什么是受管制的代碼?什么是強(qiáng)類型系統(tǒng)?什么是裝箱和拆箱?什么
是重載?什么是多態(tài)?CTS、CLS和CLR分別作何解釋?
應(yīng)用程序域:應(yīng)用程序域(通常是AppDomain)是用于隔離應(yīng)用程序的虛擬進(jìn)程。在同一個
應(yīng)用程序作用域中創(chuàng)建的所有對象(換句話說,從該應(yīng)月程序的入口點(diǎn)開始沿著對象激活序
列的任何地方)都在同一個應(yīng)用程序域中創(chuàng)建。多個應(yīng)月程序域可以存在于一個操作系統(tǒng)進(jìn)
程中,使它們成為隔離應(yīng)用程序的簡便方式。操作系統(tǒng)進(jìn)程通過使用各不相同的內(nèi)存地址空
間來提供隔離。盡管它是有效的,但也是代價昂貴的,并且不能達(dá)到大型Web服務(wù)器所簫
要的數(shù)量。與其相比,公共語言運(yùn)行時通過管理在應(yīng)用程序域中運(yùn)行的代碼的內(nèi)存使用來強(qiáng)
制進(jìn)行應(yīng)用程序隔離。這樣就確保它不會訪問應(yīng)用程序域以外的內(nèi)存。需要注意的是,只有
類型安全的代碼才能以這種方式管理(當(dāng)在應(yīng)用程序域口加載不安全代碼時,運(yùn)行時不能保
證隔離)。
理解應(yīng)用程序域:
應(yīng)用程序域是.NET運(yùn)行庫的邏輯進(jìn)程表示,操作系統(tǒng)進(jìn)程可以包含多個應(yīng)用程序域。應(yīng)用程序
域具有下列優(yōu)點(diǎn):
1、隱藏了進(jìn)程具體的操作系統(tǒng)信息。從而允許把.NET放在不同的操作系統(tǒng)下。
2、提供了隔離。即使運(yùn)行在同一個進(jìn)程中的屬于不同域的應(yīng)用程序也不能直接共享全局?jǐn)?shù)據(jù)、
靜杰數(shù)據(jù)或其他資源。所以,一個應(yīng)用程序域失敗了,也不會影響到同一個進(jìn)程中的其他反用程
序域。
3、對于不需要昂貴的IPC機(jī)制的進(jìn)程,應(yīng)用程序域允許.NET運(yùn)行庫優(yōu)化運(yùn)行在這種進(jìn)程中
的應(yīng)用程序間的通信。
因?yàn)閼?yīng)用程序域是被隔離的,所有NET對象都會被界定在創(chuàng)建它的應(yīng)用程序域內(nèi)。如果聘應(yīng)用
程序域的邊界傳遞對象引用,該被引用對象就被稱為遠(yuǎn)程下?象。
裝箱和拆箱
在C#中的有兩種類型的變量:值類型和引用類型。當(dāng)值類型和引用類型相互轉(zhuǎn)化時,會發(fā)生裝箱
和拆箱的過程。這里有一點(diǎn)要聲明:經(jīng)過拆箱或裝箱的對象會多出它自己一份拷貝。它和它的拷
貝不在一個存儲區(qū)域。這也是值類型和引用類型的區(qū)別所在。值類型總是在棧中,而引用類型總
是在托管堆中。(目前J2SE5.O也支持了裝箱和拆箱,但是我目前不知道是否和C#一樣)。為了進(jìn)
一步理解看下面例子:
structPoint{
publicintx;
publicinty;
}
staticvoidMainQ{
Pointp;
px=10;
p.y=20;
Object0二p;//box.將值類型從棧中拷貝到堆中。
/****************本*******><*****************************************本*****!
*從托管堆中將對象拷貝到棧中。
/************************************************************************/
Pointp2=(Point)p;
Consolc.WritcI.inc("p2.x:="+p2.x+“p2.y:="+p2.x);
p.x=16;
py=34;
Consolc.WritcLinc("p2.x:="+p2.x+“p2.y:="+p2.x);
Console.WriteLinc("p.x:="+p.x+“p.y:="+p.x);
}
輸出結(jié)果為:
p2.x:=10;p2.y=20;
p2.x:=10;p2.y=20;
p.x:=16;p.y=34;
可知,變量經(jīng)過拆箱/裝箱后,得到是自己的另一份拷貝。
裝箱和取消裝箱的概念是C#的類型系統(tǒng)的核心。它在“值類型”和“引用類型”之間的架
起了一座橋梁,使得任何“值類型”的值都可以轉(zhuǎn)換為object類型的值,反過來轉(zhuǎn)換也可以。
裝箱和取消裝箱使我們能夠統(tǒng)一地來考察類型系統(tǒng),其中任何類型的值最終都可以按對象處理
多態(tài)
一.形象理解
兩條理解的原則:
(1)一個派生類對象可以被聲明成一個基類,或者是一個基類指針可以指向一個派生類對象:
〃c++code
BaseClass*p;
DcrivcdClassobj;
p=&obj;
//C#code
BaseClassobj=newDcrivedClassO;
(2)把一個對象看做是一人獨(dú)立的個體,調(diào)用對象的public成員函數(shù)實(shí)際上是給這個對?象發(fā)送一
個消息,采取什么樣的動作完全由對象自己決定。
Shape是基類,Circle和Line是從Shape繼承出來的,Shape有draw。方法,Circle與Line分別自己定義了
自己的draw。方法,在下面的代碼里:
//JavaCode
staticvoidfnnr(Shnpes)
{
s.DrawQ;
}
如果發(fā)生了這樣的調(diào)用:
Line1=newLine。;
Circlec=newCircleQ;
func(l);
tunc(c);
一個Circle和一個Line被當(dāng)做Shape傳到函數(shù)里去了,然后調(diào)用DrawQ,會發(fā)生什么情況?因?yàn)閷ο?/p>
是獨(dú)立的個體,在funcO里,這兩個對象被分別傳遞了Draw。消息,叫它們繪制自己吧,于是他們
分別調(diào)用了自己類里定義的Draw。動作。
通過這兩條原則我們可以理解上面的多態(tài)。正是由于多態(tài),使得我們不必要這樣去做:
IF你是一個CircleTHEN調(diào)用Circle的Draw。
EISEIF你是一個LineTHEN調(diào)用Line的Draw。
EISE…
我們只要給這個被聲明成為Shape的對象發(fā)送Draw消息,怎么樣去Draw就由對象自己去決定了。
二.一切皆因虛函數(shù)
先看看實(shí)現(xiàn)多態(tài)的基本條件:
(1)基類含有虛函數(shù)
(2)繼承類把這個虛函數(shù)重新實(shí)現(xiàn)了
(3)繼承類也可能沒有重新實(shí)現(xiàn)基類的所有虛函數(shù),因此對于這些沒有被重新實(shí)現(xiàn)的虛
函數(shù)不能發(fā)生多態(tài)。
publicabstractvoidhclloQ;
//???
}
3.C#:
C#對于多態(tài)的編寫是最為嚴(yán)格和嚴(yán)謹(jǐn)?shù)摹?/p>
(1)虛函數(shù)用virtual聲明。
(2)純虛函數(shù)用abstract聲明,含純虛函數(shù)的類是抽象類,必須用abstract關(guān)鍵字修飾。
(3)如果僅僅是覆蓋基類的非虛方法,則需要用new關(guān)鍵字聲明:
//C#Co#
publicclassBaseClass
(
publicvoidhello。
{
SystemConsole\X'riteline(wHellojhisenmefromRaRpriass");
publicclassDerivedClass:BaseClass
{
publicnewvoidhello。
(
Systcm.Consolc.WritcLinc(*Hello,thisiscomefromDerivedClassw);
}
publicstaticvoidMain。
{
BaseClassobj=newDerivedClass0;
obj.hello。;
}
}
輸出為Hello,thiscomefromBaseClass,也就是說這并沒有實(shí)現(xiàn)多態(tài)(非多態(tài))。
(4)通過virtual-override-abstract-override組合實(shí)現(xiàn)多杰。
當(dāng)派生類重新實(shí)現(xiàn)基類的虛函數(shù)(或純虛函數(shù))時,必須用override關(guān)鍵字進(jìn)行修飾。
//C#Code
publicabstractclassAbsBaseOass
publicabstractvoidhello。;
publicclassDcrivcdClass:AbsBascClass
publicvoidhelloQ
{
System.Console.WriteLine("Helloworld!");
}
publicstaticvoidSayHello(AbsBaseClassobj)
(
obj.helloQ;
}
publicstaticvoidMain。
(
DerivedClass_obj=newDerivedClassQ;
DerivedChss;S^yHelln(_nbj);
}
}
輸出為Helloworld!
三.多態(tài)的反溯
繼承類對象在發(fā)生多態(tài)時,并是不完全拋開基類不管的,它會去查看基類的虛函數(shù)列表,在這個
列表的范圍內(nèi)才會發(fā)生多態(tài)。
讓我們來看一個比較變雜的例子:
//JavaCode
classA
(
protectedvoidhclio(Objecto)
|
System.out.prindnf'A-Object*');
)
)
classBextendsA
|
protectedvoidhello(Strings)
{
System.out.prindnf'B-String");
protectedvoidhelio(Objecto)
System.out.prindnf'B-Object1');
)
};
classC
{
publicstaticvoidmain(StringargsQ)
|
Objectobj=newObject。;
Stringstr="ABC**;
Aa=newBQ;
a.hcllo(obj);
a.hello(str);
}
};
輸出結(jié)果為:
B-Object
B-Object
正如上面所說的,由于基類里沒有參數(shù)類型為String的虛函數(shù),因此B的heHo(Strin0方法不參與多
態(tài)。調(diào)用a.heh(str)時,由于String是Object的繼承類,因此這個str被作為一個Object傳入了B的
hdlo(()bjcct),這一點(diǎn)正如我們的原則一所述。
四.接口——僅僅是更抽象的抽象類
接口是類的協(xié)定,但由于接口又參與多態(tài)性,從這一點(diǎn)說,我們認(rèn)為它是更為抽象的抽象
類:
CTS、CLS和CLR
,NET結(jié)合Java和COM解決方案兩者優(yōu)點(diǎn)來解決互操作性問題。類似于COM定義的標(biāo)準(zhǔn)二進(jìn)制
格式,.NET定義了一個稱為通用類型系統(tǒng)CommonTypeSystcm(CTS)的類型標(biāo)準(zhǔn)。這個類型系
統(tǒng)不但實(shí)現(xiàn)了CQM的變量兼容類型,而且還定義了通過月戶自定義類型的方式來進(jìn)行類型擴(kuò)
展。任何以.NET平臺作為目標(biāo)的語言必須建立它的數(shù)據(jù)類型與CTS的類型間的映射。所
有.NET語言共享這一類型系統(tǒng),實(shí)現(xiàn)它們之間無縫的互提作。該方案還提供了語言之間的繼
承性。例如,用戶能夠在VB.NET中派生一個由C#編寫的類。
很顯然,編程語言的區(qū)別不僅僅在于類型。例如,一些語言支持多繼承性,一些語言支持無
符號數(shù)據(jù)類型,一些語言支持運(yùn)算符重載。用戶應(yīng)認(rèn)識到這一點(diǎn),因此.NET通過定義公共語
言規(guī)范(CLS:CommonLanguageSpecification),限制了由這些不同引發(fā)的互操作性問題。CIS
制定了一種以.NET平臺為目標(biāo)的語言所必須支持的最小特征,以及該語言與其他.NET語言
之間實(shí)現(xiàn)互操作性所需要的完備特征。認(rèn)識到這點(diǎn)很重要,這里討論的特征問題已不僅僅是
語言間的簡單語法區(qū)別。例如,CLS并不去關(guān)心一種語言用什么關(guān)鍵字實(shí)現(xiàn)繼承,只是關(guān)心
該語言如何支持繼承。
CLS是CTS的一個子集。這就意味著一種語言特征可能符合CTS標(biāo)準(zhǔn),但又超出CLS的范疇。
例如:C#支持無符號數(shù)字類型,該特征能通過CTS的測試,但CLS卻僅僅識別符號數(shù)字類型。
因此,如果用戶在一個組件中使用C#的無符號類型,就可能不能與不使用無符號類型的語言
(如VB.NED設(shè)計的.NET組件實(shí)現(xiàn)互操作。這里用的是“可能不”,而不是“不可能”,因?yàn)?/p>
這一問題實(shí)際依賴于對non-CLS-compliant項(xiàng)的可見性。事實(shí)上,CLS規(guī)則只適用于或部分適用
于那些與其他組件存在聯(lián)系的組件中的類型。實(shí)際上,用戶能夠安全實(shí)現(xiàn)含私有組件的項(xiàng)目,
而該組件使用了用戶所選擇使用的NET語言的全部功能,且無需遵守CLS的規(guī)范。另一方面,
如果用戶需要.NET語言的互操作性,那么用戶的組件中的公共項(xiàng)必須完全符合CLS規(guī)范。讓
我們來看下面的C#代碼:
publicclassFoo
{
//Theuint(unsigncdintegertypeisnon-CLScompliant.
//Butsincethisitemispriva:e,theCISrulesdonotapply,
privateuintA=4;
//Sinceshisuintmemberispublic,wehaveaCLS
//complianceissue.
publicuintB=5;
//ThelongtypeisCLScompliant.
publiclong(.ietAQ
{
returnA;
最后一個C是公共語言運(yùn)行庫CommonLanguageRuntimc(CLR)o簡單地說,CLR是CTS的實(shí)現(xiàn),
也就是說,CLR是應(yīng)用程序的執(zhí)行引擎和功能齊全的類庫,該類庫嚴(yán)格按照CTS規(guī)范實(shí)現(xiàn)。
作為程序執(zhí)行引擎,CLR負(fù)責(zé)安全地栽入和運(yùn)行用戶程序代碼,包括對不用對象的垃圾回收
和安全檢查。在CLR監(jiān)控之下運(yùn)行的代碼,稱為托管代碼(managedcede)。作為類庫,CLR提
供上百個可用的有用類型,而這些類型可通過繼承進(jìn)行擴(kuò)展。對于文件I/。、創(chuàng)建對話框、
啟動線程等類型——基本上能使用WindowsAPI來完成的操作,都可由其完成。
讓我們正確看待“3C”。開發(fā)人員在構(gòu)建自己的分布式應(yīng)用程序時,因?yàn)橛脩粼诰幊虝r將直
接面對CLR,應(yīng)將主要精力放在學(xué)習(xí)了解CLR上,而不是CTS和CLS。而對于希望以.NET平臺
為目標(biāo)的語言和工具開發(fā)商來說,就需要深入理解CTS和CLS?;ゲ僮餍越M件是分布式應(yīng)用的
關(guān)鍵,因此理解.NET如何通過定義公共類型實(shí)現(xiàn)這一目標(biāo),也就顯得十分重要。
4.列舉一下你所了解的XML技術(shù)及其應(yīng)用
5.值類型和引用類型的區(qū)別?寫出C#的樣例代碼Ref與Out的區(qū)別。
Ref與Out的區(qū)別是
相同點(diǎn):
1.使參數(shù)按引用傳遞,注意這里的“引用”與我們通常說的“對象引用”不一樣,可以形象的理
解為,類似于C/C++中傳指針(地址)。
2.效果是,被調(diào)用方對該參數(shù)的修改會反映到該變量中,即當(dāng)調(diào)用結(jié)束返回時,調(diào)用方看到的是
修改過的值。
3.方法定義和調(diào)用方法都必須顯式使用ref或者out關(guān)鍵字
不同點(diǎn):
1。傳遞到ref的參數(shù)必須最先初始化,即由調(diào)用方顯式初始化。
2。傳遞到nut的參數(shù)在傳遞之前不需要顯式初始化,但需要調(diào)用方在方法返回之前必須對其賦
值。
使用場景:
關(guān)于重載說明:
loref和out關(guān)鍵字在運(yùn)行時的處理方式不同,但在編譯時的處理方式相同。因此,如果一個方
法采用ref參數(shù),而另一個方法采用out參數(shù),則無法重載這兩個方法。
2。但是,如果一個方法采用ref或out參數(shù),而另一個方法不采用這兩類參數(shù),則可以進(jìn)行重
載。
使用ret前必須對變量賦值,out不用。
out的函數(shù)會清空變量,即使變量已經(jīng)賦值也不行,退出函數(shù)時所有。Ut引用的變量都要賦值,ref
引用的可以修改,也可以不修改。
區(qū)別可以參看下面的代碼:
usingSystem;
classTcstApp
{
staticvoidoutTest(outintx,outinty)
{〃離開這個函數(shù)前,必須對x和y賦值,否則會報錯。
//y=x;
〃上面這行會報錯,因?yàn)槭褂昧?。Ut后,'和y都清空了,需要重新賦值,即使調(diào)用函數(shù)前賦過
值也不行
y=2;
staticvoidrcfTcst(rcfintx,refinty)
y-x;
}
publicstaticvoidMain。
(
//outtest
inta,b;
〃out使用前,變量可以不賦值
outTest(outa,outb);
Console.Writci.inc(Ha={0};b={1}",a,b);
intc=ll,d=22;
nnt'l'e<;r(niitc,nutd);
Consolc.WritcI.inc(nc={C};d={1}",c,d);
//reftest
intm,n;
//rcfrcst(rcfm,refn);
〃上面這行會出錯,ref使用前,變量必須賦值
into=l1,p=22;
rcfTcst(rcfo,refp);
Console.\VntcLine("o={0};p={1
}
}
6.ADO.net中常用的對象有哪些?分別描述一下。
Connection對象
Command與DataRcadcr對象
DataSet與Data/\dapter
7.如何理解委托?
單從委托的概念上來講,很簡單,就是對方法的引用,包括靜態(tài)方法和對象實(shí)例的方法,有點(diǎn)類似
C語言中的方法指針,不過方法指針只能引用靜態(tài)方法!而且委托是類安全的!一句話來概括:
委托就是方法的入口!
調(diào)用委托就是調(diào)用方法,可能有人會說既然調(diào)用委托就是涮用方法,那為什么不直接調(diào)用方法
了,干嗎非得通過委托來調(diào)用!一開始我也是這么想,包括現(xiàn)在也還有這個疑惑,個人覺得,如果
撤開事件來說,委托除了匿名方法名稱之外,沒有具體實(shí)質(zhì)型的好處噫思就是說我們?nèi)绻皇?/p>
在事件里用委托,和直接調(diào)用方法是沒有本質(zhì)區(qū)別的!
至于委托的聲明格式,其基本語法為:修飾符delegate返回類型代理名稱(參數(shù)列表)
比如說publicdelegatevoidMyDclcgate(inti);
實(shí)例化的時候給它賦值一個方法(實(shí)例或靜態(tài)方法)名就可以了MyDclegatcMD=ncw
MyDelegate(類中的方法名)
委托還可以實(shí)現(xiàn)多重委托,可以用Combine方法講不同代理組在一越,也可以用Remove方法從
多重代理中除去一個代理,不過在我們實(shí)際使用可以不需要這么麻煩,用+,-可以達(dá)到這個目的!
比如說:
MyDelegateMD=newMyDelegate(方法1);
Vyr)elegnteMD2=newMyDHpgjue(方法2);
MyDelegateMD3=MD+MD2;
也可以這么寫
MyDelegateMD3+=ne\vMyDelegate(方法1);
MyDelegateMD3+=nc\vMyDelegate(方法2);
執(zhí)行代理MD3就是調(diào)用方法1和方法2;
多重代理個人覺得在事件委托中用處很大,因?yàn)樵趯?shí)際對象中,一個方法執(zhí)行會觸發(fā)多個方法
相繼執(zhí)行,這個時候會需要多重代理這個概念!使用多重代理的時候要注意方法返回類型必須
是void類型的!
PS:在代理類中有2個屬性,一個是Method,表示所應(yīng)用方法的名稱!另一個是Target,表示實(shí)例方
法所在對象的類型,如果是靜態(tài)方法,則返回NULL
事件(Event)
正如我上面說的那樣,如果撇開事件,委托好像沒有多大用途,但也只是假設(shè),委托就是為事件服
務(wù)的,兩者是分不開的?言事件比言委托!在C#中,事件和屬性,方法一樣,是類的一種成員,通過事
件的使用,可以在類的對象發(fā)生某種變化,通過事件,來觸發(fā)某些方法來處理事件的發(fā)生!
舉個通俗的例子,在ASP.NET的窗體生成種,拖進(jìn)來一個按鈕,雙擊它,頁面后臺會自動生成按鈕
事件的方法名稱,編程人員只要在該方法體內(nèi)寫上具體方法即可!那么按鈕類里面是怎么實(shí)現(xiàn)
的了?
具體是這樣的,在按鈕類里面聲明了一個事件委托:
publicenvetEventHandlerClick;
并寫了一個觸發(fā)該事件的方法:
protectedvirtualvoidOnClick(Event/\rgese)
if(Click!=Null)
Click(this,e)
而什么時候調(diào)用上面這個方法,根據(jù)程序結(jié)構(gòu)類型不同而異,在WEB應(yīng)用程序中,是通過回傳事
件接口來調(diào)用上面這個方法,在按鈕類里只是實(shí)現(xiàn)了事件委托,具體雙擊按鈕觸發(fā)的實(shí)際方法
是在頁面程序里編寫的!(PS:所以這也是我認(rèn)為使用事件委托的最大好處,機(jī)動行好,靈活,如果
不用委托,而是直接調(diào)用方法,那么所調(diào)用的方法就固定死了,不利于實(shí)際面向?qū)ο缶幊讨谐霈F(xiàn)
的未預(yù)型方法,不靈活了)
在頁面程序?yàn)榘粹o綁定事件委托所引用的方法是開發(fā)環(huán)境自動幫我們完成的,但我們要清楚
實(shí)現(xiàn)的必要步驟:
在頁面程序里必須給按鈕的事件實(shí)例化方法,在ASPNF.T的頁面代碼中的privatevoid
InitializcComponcntQ里要寫上:
this.Button1.Click+二newSystem.EventHandler(this.Bugnl_Click);//這里this.ButtonLClick指具
體執(zhí)行的方法名稱然后就可以在this.ButtonLClick方法里寫上具體要執(zhí)行的代碼!
綜上所述,實(shí)現(xiàn)事件的步驟為:
1.聲明事件委托;
2.觸發(fā)事件的方法;
3.實(shí)例化事件委托(給委托添加引用方法)
msdn2005中是這樣解釋的:
委托具有以下特點(diǎn):
委托類似于C++函數(shù)指針,但它是類型安全的。
委托允許將方法作為參數(shù)進(jìn)行傳遞。
委托可用于定義回調(diào)方法C
委托可以鏈接在一起;例如,可以對一個事件調(diào)用多個方法。
方法不需要與委托簽名精確匹配。有關(guān)更多信息,請參見協(xié)變和逆變。
C#2.0版引入了匿名方法的概念,此類方法允許將代碼塊作為參數(shù)傳遞,以代替單獨(dú)定義的
方法。
委托適用于那種在某些其他語言中需用函數(shù)指針來解決的情況(場合)。但是,與函數(shù)指針不同,
委托是面向?qū)ο蠛皖愋桶踩摹?/p>
委托聲明定義一個類,它是從Systcm.Delegate類派生的類。委托實(shí)例封裝了一個調(diào)用列表,
該列表列出了一個或多個方法,每個方法稱為一個可調(diào)用實(shí)體。對于實(shí)例方法,可調(diào)用實(shí)體由一
個實(shí)例和該實(shí)例的方法組成。對于靜態(tài)方法,可調(diào)用實(shí)體僅由一個方法組成。如果用一組合適的
參數(shù)來調(diào)用一個委托實(shí)例,則該委托實(shí)例所封裝的每個可調(diào)用實(shí)體都會被調(diào)用,并且用的都是上
述的同一組參數(shù)。
委托實(shí)例的一個有趣且有用的屬性是:它既不知道也不關(guān)心有關(guān)它所封裝的方法所屬的類的種
種詳情;對它來說最重要的是這些方法與該委托的類型兼容(第15.1節(jié))。這使委托非常
適合“匿名”調(diào)用。這是一個強(qiáng)大的功能。
定義和使用委托分三個步驟:聲明、實(shí)例化和調(diào)用。
8.C#中的接口和類有什么異同。
一個接口定義一個協(xié)定。實(shí)現(xiàn)接口的類或結(jié)構(gòu)必須遵守其協(xié)定。接口可以包含方法、屬性、
索引器和事件作為成員。
接口是負(fù)責(zé)功能的定義,項(xiàng)目中通過接口來規(guī)范類,操作類以及抽象類的概念!
而類是負(fù)責(zé)功能的具體實(shí)現(xiàn)!
在類中也有抽象類的定義,抽象類與接口的區(qū)別在于:
抽象類是一個不完全的類,類里面有抽象的方法,屬性,也可以有具體的方法和屬性,需要進(jìn)一
步的專業(yè)化。
但接口是一個行為的規(guī)范,里面的所有東西都是抽象的!
一個類只可以繼承一個基類也就是父類,但可以實(shí)現(xiàn)多個接口
PS:接口除了規(guī)范一個行為之外,在具體項(xiàng)目中的實(shí)際作用也是十分重要的,在面向?qū)ο蟮脑O(shè)計
原則以及設(shè)計模式的使用中,無不體現(xiàn)作為一個接口的使用好處,最直接的就是設(shè)計原則中OCP
(開放封閉原則),我們使用接口,而不需要關(guān)心他的具體實(shí)現(xiàn),具體實(shí)現(xiàn)的細(xì)節(jié)變化也無關(guān)客
戶端(使用接口的類)的使用,對與擴(kuò)展是開放的,我們可以另寫一個接口的實(shí)現(xiàn)來擴(kuò)展當(dāng)前程
序,而不影響上層的使用,但對修改是封閉的,即我們不能夠再去修改接口的定義,當(dāng)然這個“不
能夠”是指在規(guī)范原則上不應(yīng)該這么做!
9.0net中讀寫數(shù)據(jù)庫需要用到哪些類?他們的作用
10.UDP連接和TCP連接的異同。
ll.ASP.net的身份驗(yàn)證方式有哪些?分別是什么原理?
12.進(jìn)程和線程分別怎么理解?
簡單的說,你每啟動一個程序,就啟動了一個進(jìn)程。在出'indows3.x下,進(jìn)程是最小運(yùn)行單
位。在Windows95/NT下,每個進(jìn)程還可以啟動幾個線程,比如每下載一個文件可以單獨(dú)開
一個線程。在Windows95/NT下,線程是最小單位。WINDOWS的多任務(wù)特性使得線程之間
獨(dú)立運(yùn)行,但是它們彼此共享虛擬空間,也就是共用變量,線程有可能會同時操作一片內(nèi)
存。線程與進(jìn)程的區(qū)別多線程共存于應(yīng)用程序中是現(xiàn)代噪作系統(tǒng)中的基本特征和重要標(biāo)志。
用過UNIX操作系統(tǒng)的讀者知道進(jìn)程,在UNIX操作系統(tǒng)中,每個應(yīng)用程序的執(zhí)行都在操作
系統(tǒng)內(nèi)核中登記一個進(jìn)程標(biāo)志,操作系統(tǒng)根據(jù)分配的標(biāo)志對應(yīng)用程序的執(zhí)行進(jìn)行調(diào)度和系統(tǒng)
資源分配,但進(jìn)程和線程有什么區(qū)別呢?進(jìn)程和線程都是由操作系統(tǒng)所體會的程序運(yùn)行的基
本單元,系統(tǒng)利用該基本單元實(shí)現(xiàn)系統(tǒng)對應(yīng)用的并發(fā)性。進(jìn)程和線程的區(qū)別在于:線程的劃
分尺度小于進(jìn)程,使得多線程程序的并發(fā)性搞。另外,進(jìn)程在執(zhí)行過程中擁有獨(dú)立的內(nèi)存單
元,而多個線程共享內(nèi)存,從而極大地提高了程序的運(yùn)行效率。線程在執(zhí)行過程中與進(jìn)程還
是有區(qū)別的。每個獨(dú)立的線程有一個程序運(yùn)行的入口、順序執(zhí)行序列和程序的出口
13.什么是code-Behind技術(shù)。
14.活動目錄的作用。
15..net中讀寫XMT,杓類都?xì)w屬于哪些命名空間?
16.解釋一下UDDI、WSDL的意義及其作用。
17.什么是SOAP,有哪些應(yīng)用。
答:SOAP(SimpleObjectAccessProtocol)簡單對象訪問協(xié)議是在分散或分布式的環(huán)境中交換
信息并執(zhí)行遠(yuǎn)程過程調(diào)用的協(xié)議,是一個基于XML的協(xié)議。使用SOAP,不用考慮任何特定
的傳輸協(xié)議(最常用的還是HT1T協(xié)議),可以允許任何類型的對象或代碼,在任何平臺上,
以任何一直語言相互通信,這種相互通信采用的是XML格式的消息,具體請
#:http:///2521621.html
18.如何部署一個ASP.net頁面。
19.如何理解.net中的垃圾回收機(jī)制。
20.常用的調(diào)用webservice方法有哪些?
21.Virtual與abstraction區(qū)別?
22.結(jié)構(gòu)與類有何差異?哪些時候比較適合使用結(jié)構(gòu)和類?
它們的相同之處:
1,兩者都是Container類型,這表示它們可以包含其他數(shù)據(jù)類型作為成員.
2,兩者都擁有成員,這些成員包括:構(gòu)造函數(shù),方法,屬性,字段,常量,枚舉類型,事件,以及事件處
理函數(shù).
3,兩者的成員都有其各自的存取范圍.例如,您可以將某一個成員聲明為Public,而將另外一人
成員聲明為Private
4,兩者都可以實(shí)現(xiàn)接口.
5,兩者都可以公開一個默認(rèn)屬性燃而前提是這個屬性至少要取得一個自變量.
6,兩者都可以聲明和觸發(fā)事件,而且兩者都可以聲明委托Qclegate).
7,結(jié)構(gòu)與類都可以完全是空的.
它們的不同之處如下:
1,結(jié)構(gòu)是實(shí)值類型(ValueTypes),而類是引用類型(ReferenceTypes).
2,結(jié)構(gòu)使用載存儲(StackAllocation),而類使用堆存儲(HeapAllocation).
3,所有結(jié)構(gòu)成員默認(rèn)都是Public,而類的變量與常量數(shù)則默認(rèn)為(Private,不過其他類成員默認(rèn)
都是Public.
4,結(jié)構(gòu)成員國不能被聲明為Protected,但是類成員可以這樣做.
5,結(jié)構(gòu)變量聲明不能指定初始值,使用new關(guān)鍵字詞或?qū)探M進(jìn)行初始化,但類變量聲明則可以
這樣做.
6,結(jié)構(gòu)不能聲明默認(rèn)的構(gòu)造函數(shù),也就是不擁有參數(shù)的非失享構(gòu)造函數(shù),但是類則無此限制.
7,二者都可以擁有共享構(gòu)造函數(shù),結(jié)構(gòu)的共享構(gòu)造函數(shù)不能帶有參數(shù),但類的共享構(gòu)造函數(shù)則
可以帶或者不帶參數(shù).
8,結(jié)構(gòu)不允許聲明析構(gòu)函數(shù)(Destructor),類則無此限制.
*結(jié)構(gòu)的實(shí)例(Instance)聲明,不允許對包含的變量進(jìn)行初始化設(shè)定,類則可以在聲明類的實(shí)例時,
同時進(jìn)行變量初始化.
10,結(jié)構(gòu)是隱式繼承自ValucTypc類而且不能繼承任何其它的類型,類則可以繼承來自
ValueType以外的任何類.
11,結(jié)構(gòu)是無法被繼承的,類則可以被繼承.
12,結(jié)構(gòu)永遠(yuǎn)不會終止,因此CommonLanguageRuntimc(CLR)不會在任何結(jié)構(gòu)上調(diào)用Finalize方
法.類則是由內(nèi)存回收進(jìn)程加以終止,當(dāng)內(nèi)存回收進(jìn)程檢測到?jīng)]有任何作用的類時,它就會調(diào)
用類的Fin油疣方法.
13,結(jié)構(gòu)不需要構(gòu)造函數(shù),類則需要構(gòu)造函數(shù).
14,結(jié)構(gòu)只能在一種情況下使用非共享構(gòu)造函數(shù),那就是非共享構(gòu)造函數(shù)會接收參數(shù):但是類則
無此限制,它可以使用帶參數(shù)或不帶參數(shù)的非共享構(gòu)造函數(shù).
15,每一個結(jié)構(gòu)都具有無參數(shù)的隱含公共構(gòu)造函數(shù).此構(gòu)造函數(shù)會將結(jié)構(gòu)的所有成員初始化為
基默認(rèn)值.您不能重新定義這個行為.
除了上述的相似處與相異點(diǎn)之外,我們還可以在"實(shí)例與變量”層面上來探討結(jié)構(gòu)與類.由于
結(jié)構(gòu)是數(shù)值類型的,因此每個結(jié)構(gòu)變量會永久地綁定到結(jié)構(gòu)實(shí)例上.然而類是引用類型的,而
且對象變量可引用不同的類實(shí)例.在此方面的區(qū)別,會對于使用結(jié)構(gòu)與類造成下列影響:
1結(jié)構(gòu)變量會隱式地使用結(jié)構(gòu)的無參數(shù)構(gòu)造函數(shù)來初始化成員,這就意味著,語句StructlS
就等于StructlS=newStructlQ;
2當(dāng)您好將一個結(jié)構(gòu)變量賦值給另一個,或是將結(jié)構(gòu)實(shí)例傳遞到程序變量時,所有變量成員的
值會復(fù)制到新的結(jié)構(gòu)中.當(dāng)您將一個對象變量賦值給另一個,或是將對象變量傳遞到程序時,
則只會復(fù)制指針.
3,您可以將Null值賦值給結(jié)構(gòu)變量,但是該實(shí)例會一直與該變量保持關(guān)聯(lián).雖然變量成員會因
此賦值而重新初始化,但是您還是可以調(diào)用變量的方法并訪問其數(shù)據(jù)成員.相反地,如果您將
對象變量設(shè)定為Null,您就會中斷它與任何類實(shí)例的關(guān)聯(lián),而且除非您再將另外一個實(shí)例賦
值給它,否則無法通過變量訪問任何成員.
4,您可以在不同時間將不同的類的實(shí)例賦值給同一個對象變量,而且在同一時間可以有好幾個
對象變量引用相同的類實(shí)例,如果您對類成員值做了改變,則其它指向相同實(shí)例的對象變量
也會發(fā)生改變.然而,結(jié)構(gòu)成員則會封裝在它們自己的實(shí)例中,變更結(jié)構(gòu)成員值并不會時其它
任何結(jié)構(gòu)變量的成員造成影響湛至也不會影晌相同Smet聲明的其它實(shí)例
5,兩個結(jié)構(gòu)必須以成員對成員的比較方式來執(zhí)行相等比較.兩個對象變量可以使用Equals方法
來加以比較.Equals會判斷兩個變量是否指向相同的實(shí)例.
在下列狀況中,比較適合使用結(jié)構(gòu)
1,您擁有少量數(shù)據(jù)而且希望使用會傳遞的方式來為變量賦值時.
2您會在每一個實(shí)例上執(zhí)行大量的操作,而且若使用堆來管理會造成性能下降.
3,您不需要進(jìn)行繼承,而且不需要實(shí)例有特殊性.
4,您不會采用Boxing與Unboxing結(jié)構(gòu).
,您會在Managed與UnManaged程序代嗎之間傳遞Blittable數(shù)據(jù).
在下列情況中,比較適合使用類:
1,您需要使用繼承與多態(tài).
2,您需要在創(chuàng)建階段初始化一個或多個成員.
3,您需要提供一個非參數(shù)型的構(gòu)造函數(shù).
4,您需要沒有任何限制的事件處理支持.
23.談?wù)勀銓ΧS樹的理解?
24.如何把一個array復(fù)制到arrayList里
fbreach(objectoinarray)arrayList.Add(o);
25.datagrid.datasouse可以連接什么數(shù)據(jù)源[dataset,datatable,dataview]
dataset,datatable,dataview,IList
26.概述反射和序列化
反射:程序集包含模塊,而模塊包含類型,類型又包含成員。反射則提供了封裝程
序集、模塊和類型的對象。您可以使用反射動態(tài)地創(chuàng)建類型的實(shí)例,將類型綁定
到現(xiàn)有對象,或從現(xiàn)有對象中獲取類型。然后,可以調(diào)用類型的方法或訪問其字
段和屬性
序列化:序列化是將對象轉(zhuǎn)換為容易傳輸?shù)母袷降倪^程。例如,可以序列化一個對
象,然后使用HTTP通過Internet在客戶端和服務(wù)器之間傳輸該對象。在另一
端,反序列化將從該流重新構(gòu)造對象。
27.概述o/rmapping的原理
利用反射,配置將類于數(shù)據(jù)庫表映射
28.類成員有()種可訪問形式
可訪問形式?不懂。
可訪問性:public,protected,private,internal
29.用sealed修飾的類有什么特點(diǎn)
sealed修飾符用于防止從所修飾的類派生出其它類。如果一個密封類被指定為其
他類的基類,則會發(fā)生編譯時錯誤。
密封類不能同時為抽象類。
sealed修飾符主要用于防止非有意的派生,但是它還能促使某些運(yùn)行時優(yōu)化。具
體說來,由于密封類永遠(yuǎn)不會有任何派生類,所以對密封類的實(shí)例的虛擬函數(shù)成
員的調(diào)用可以轉(zhuǎn)換為非虛擬調(diào)用來處理。
30.C#中,stringstr=null與stringstr=nn,請盡量用文字說明區(qū)別。(要點(diǎn):說明詳細(xì)的內(nèi)存
空間分配)
31.概述三層結(jié)構(gòu)體系
32.如何實(shí)現(xiàn)MVC模式,舉例說明!
33.onet中讀寫數(shù)據(jù)庫需要用到哪些類?他們的作用
34.ASP.net的身份驗(yàn)證方式有哪些?分別是什么原理?
35..netRemoting與wcbservices區(qū)別?
36.C#可否對內(nèi)存進(jìn)行直接的操作
37:您在什么情況下會用到虛方法?它與接口有什么不同?
38:Override與重載有什么區(qū)別?
39:值類型與引用類型有什么區(qū)別?
40:怎樣理解靜態(tài)變量?
41:向服務(wù)器發(fā)送請求有幾種方式?
42:DataReader與DataSet有什么區(qū)別?
43:如果在一個B/S結(jié)構(gòu)的系統(tǒng)中需要傳遞變量值,但是又不能使用Session.Cookie.
Application,您有幾種方法進(jìn)行處理?
使用Scnrcr.Transfcr
這個方法相比上面介紹的方法稍微復(fù)雜一點(diǎn),但在頁面間值傳遞中卻是特別有用的,使用該
方法你可以在另一個頁面以對象屬性的方式來存取顯露的值,當(dāng)然了,使用這種方法,你需要額
外寫一些代碼以創(chuàng)建一些屬性以便可以在另一個頁面訪問它,但是,這個方式帶來的好處也是顯
而易見的??傮w來說,使用這種方法是簡潔的同時又是面向?qū)ο蟮?。使用這種方法的整個過程如
下:
1,在頁面里添加必要的控件
2,創(chuàng)建返回值的Get屬性過程
3,創(chuàng)建可以返回表單的按鈕和鏈接按鈕
4,在按鈕單擊事件處理程序中調(diào)用Server.Transfer方法轉(zhuǎn)移到指定的頁面
5,在第二個頁面中,我們就可以使用ContcxtHandlcr屬性來獲得前一個頁面實(shí)例對象的引用,
通過它,就可以使用存取前一個頁面的控件的值了
以下代碼綜合實(shí)現(xiàn)上述步驟過程的代碼:
源頁面代碼:
把以下的代碼添加到頁面中
publicstringName
{
get
(
reuirnTextBoxl.Texq
)
}
publicstringEMail
(
get
{
returnTextBox2.Text;
}
)
然后調(diào)用Servcr.Transfcr方法
privatevoidButtonl_Click
(objectsender,System.EventArgse)
(
Scrvxr.TransfcrC'anothcnvcbform.aspx";
)
目標(biāo)頁面代碼:
privatevoidPage_Load
(objectsender,System.EventArgse)
{
//createinstanceofsourcewebform
WebFormlwfl;
//getreferencetocurrcn:handlerinstance
wf1=(WebForm1)Context.Handler;
Label1.Text=wfl.Name;
Label2.Text=wfl.KMail;
在ASP.NET2.0中啟用了跨頁面?zhèn)魉凸δ?,其功能和用法在以后在做介紹!
頁面之間傳遞值
方式1:
在接收頁的html代碼里加上一行:v%@ReferencePage="WebForml.aspxM%>
WcbFormlfp=(VCcbForrnl)Context.Handler;
this.TextBoxl.Text=fp.namc;//name是第一頁的public變量
Context提供對整個當(dāng)前上下文(包括請求對象)的訪問。您可以使用此類共享頁之間的信
息。
方式2:GET方式
在發(fā)送頁
publicintsum=0;
inti=int.Parsc(this.TextBox1.Tcxt)*2;
Servrer.Transfer(nWebFc'rrn2.aspx?sum="+i);
接收頁
this.TcxtBox1.Tcxt=Rcqucst[',sum'r].ToString();
orthis.TextBoxl.Text=Rcquest.Params[,,sum,'].ToStringO;
diis.TextBoxl.Text=Rcquest.Quer\'String["sum"];
方法3:全局變量
發(fā)送頁:
Application|,,sum"|=this.TextBoxl.Text;
ScrvTcr.Transfcr(HWcbFonn2.aspx";
接收更:
this/rextB()xl/rext=(string)Applicatic>n[,,sum"];
Application實(shí)質(zhì)上是整個虛擬目錄中所有文件的集合,如果想在整個應(yīng)用范圍內(nèi)使用某個變
量值,Application對象將是最佳的選擇
在這里用Sessional的方法雷同
方法4:
發(fā)送頁:
L定義靜態(tài)變量:publicstaticstringstr="H;
2.str=this.TcxtBoxl.Text;
Serv,er.Transfer("webfbnn2.aspx";
接收頁:
1.引入第一頁的命名空間:usingWebApplication1;
2this.TextBoxl.Tcxt=WcbForml.str;
44:軟件開發(fā)過程一般有幾個階段?每個階段的作用?
45:微軟推出了一系列的ApplicationBlock,請舉出您所知道的ApplicationBlock并說明其作
用?
46:請列舉一些您用到過的設(shè)計模式以及在什么情況下使用該模式?
47:您對WebService的體會?
以下幾道題目如果您不會,請較為詳細(xì)的描述您的解決思路和方法
48:通過超鏈接怎樣傳遞中文參數(shù)?
49:請編程遍歷頁面上所有TexrRox控件并給它賦值為stringF.mpty?
50:請編程實(shí)現(xiàn)一個冒泡排序算法?
51.下面這段代碼輸出什么?為什么?
inti=5;
intj=5;
if(Object.Rcfcrcnccrk]uals(i,j))
Console.WntcLine("Equal");
else
Console.WriteLinc^NotEqual1,);
52.對于這樣的一個枚舉類型:
enumColor:byte{
Red,
Green,
Blue,
Orange
)
stringOss=Enum.GetNames(typeof(Color));
byteflbb=Enum.GctValues(typeof(Color));
試寫一段程序顯示出枚舉類型中定義的所有符號名稱以及它們時應(yīng)的數(shù)值。
53.一個長度為1000。的字符串,通過隨機(jī)從a-z中抽取10000個字符組成。請用c#語言編寫
主要程序來實(shí)現(xiàn)。
54.在c#中using和new這兩個關(guān)鍵字有什么意義,請寫出你所知道的意義?using指令和語
句new創(chuàng)建實(shí)例new隱藏基類中方法
5,下面這段代碼有錯誤么?
switch(i){
caseQ:
CascZeroQ;
break;
case1:
CaseOneQ;
break;
case2:
dufault;〃wrong
CascTwoQ;
break;
56當(dāng)類T只聲明了私有實(shí)例構(gòu)造函數(shù)時,則在T的程序文本外部,_可以_(可以or不可以)
從T派生出新的類,不可以(可以or不可以)直接創(chuàng)建T的任何實(shí)例。
12.下面的代碼中有什么錯誤嗎?
usingSystem;
classA
publicvirtualvoidF。{
Console.WriteLine("A.I;");
abstractclassB:A
{
publicabstractoverridevoidF。;//newpublicabstractvoidF0;
)
l.c#中的三元運(yùn)算符是_?
2.當(dāng)整數(shù)a賦值給一個object對象時,整數(shù)a將會被—裝箱(封裝)—?
3.類成員有種可訪問形式?this.;ncwClassQ.Method;
4.publicstaticconstintA=l;這段代碼有錯誤么?是什么?c:)nst不能用static修飾
5flmt。=-123S67F;
inti=(int)f;
i的值現(xiàn)在是?123
6.利用operator聲明且僅聲明了“二二”,有什么錯誤么?
7.委托聲明的關(guān)鍵字是?dclagctc
8.用sealed修飾的類有什么特點(diǎn)?密封,不能繼承
9.在Asp.net中所有的自定義用戶控件都必須繼承自?Control
10.在.Net中所有可序列化的類都被標(biāo)記為___?
11.在.Net托管代碼中我們不用擔(dān)心內(nèi)存漏洞,這是因?yàn)橛蠸?gc
1.有哪幾種方法可以實(shí)現(xiàn)一個類存取另外一個類的成員函數(shù)及屬性,并請舉列來加以說明和分析.
2.如果齋記錄類的實(shí)例個數(shù),該如何實(shí)現(xiàn),請寫一個簡單的類于以證明.
3.A類是B類的基類,并且都有自己的構(gòu)造淅構(gòu)函數(shù),請舉例證明B類從實(shí)例化到消亡過程中構(gòu)造淅
構(gòu)函數(shù)的執(zhí)行過程.
4.需要實(shí)現(xiàn)對一個字符串的處理,首先將該字符串首尾的空珞去掉,如果字符串中間還有連續(xù)空格
的話,僅保留一個空格,即允許字符串中間有多個空格,但連續(xù)的空格數(shù)不可超過一個.
2、.net的錯誤處理機(jī)制是什么
數(shù)據(jù)庫方面:
1.存儲過程和函數(shù)的區(qū)別
2.事務(wù)是什么?
3.游標(biāo)的作用?如何知道游標(biāo)已經(jīng)到了最后?
4.觸發(fā)器分為事前觸發(fā)和事后觸發(fā),這兩種觸發(fā)有和區(qū)別。語句級觸發(fā)和行級觸發(fā)有何區(qū)別。
1。用C#實(shí)現(xiàn)以下功能
a產(chǎn)生一個int數(shù)組,長度為100,并向其中隨機(jī)插入1-100,并且不能重復(fù)。
int[]int/\rr=newint[100];
ArrayListmyList=newArrayListQ;
Randomrnd=nc\vRandom。;
\vhile(myList.Count<100)
{
intnum=rnd.Ncxt(l,101);
if(!mylJst.Contains(num))
myList.Add(num);
)
for(inti=0;i<100;i++)
intArr[i]=(int)myList[i];
b對上面生成的數(shù)組排序,需要支持升序、降序兩種順序
2o請說明在met中常用的幾種頁面間傳遞參數(shù)的方法,并說出他們的優(yōu)缺點(diǎn)。
session(viewstate)簡單,但易丟失
application全局
cookie簡單,但可能不支持,可能被偽造
inputttype="hidden"簡單,可能被偽造
url參數(shù)簡單,顯示于地址欄,長度有限
數(shù)據(jù)庫穩(wěn)定,安全,但性能相對弱
3。請說明.net中的錯誤處理機(jī)制,并舉例
trycatchfinal
4。請說出強(qiáng)名的含義
具有自己的key,可以在GAC(全局程序集緩存)為公用
5。請列出c#中幾種循環(huán)的方法,并指出他們的不同
forwileforeach
6。請指出met中所有類型的基類
object
7。請指出GAC的含義
8。SQLSREVER中,向一個表中插入了新數(shù)據(jù),如何快捷的得到自增量字段的當(dāng)前值
試卷
1.填空:⑴面向?qū)ο蟮恼Z言具有性、性、性。
(2)能用foreach遍歷訪問的對象需要實(shí)現(xiàn)接口或聲明
________________方法的類型。
(3)列舉ADO.net中的五個主要對象、、、
、oConnection,Command,DataRcader,DataAdapter,DataS3t
connection連接對象
command命令對象,指示要執(zhí)行的命令和存儲過程!
datareader是一個向前的只讀的數(shù)據(jù)流。
dataadapter是功能強(qiáng)大的適陪器,支持增刪改查的功能
dataset是一個數(shù)據(jù)級對象,相當(dāng)與內(nèi)存中的一張表或多張表!
2.不定項(xiàng)選擇:
(1)以下敘述正確的是:
A,接口中可以有虛方法。B,一個類可以實(shí)現(xiàn)多個接口。
C.接口不能被實(shí)例化。D.接口中可以包含已實(shí)現(xiàn)的方法。
⑵從數(shù)據(jù)庫讀取記錄,你可能用到的方法有:
A.ExecuteNonQueryB.ExecuteScalar
C.FillD.ExecutcReader
3.簡述privatexprotected、public、internal修飾符的訪問權(quán)限。
4.寫出一條Sql語句:取出表A中第31到第40記錄(SQLServer,以自動增長的ID作為主健,注意:
ID可能不是連續(xù)的。)
5.列舉ASP.NET頁面之間傳遞值的幾種方式。
6.寫出程序的輸出結(jié)果
classClassi{
privatestringstr="Classi.str";
privateinti=0;
staticvoidStringConvert(stringstr){
str="stringbeingconverted.'1;
}
staticvoidStringConvert(Classlc){
c.str="stringbeingconverted.H;
)
staticvoidAdd(inti){
i++;
}
staticvoid/\ddWithRcf(refinti){
i++;
)
staticvoidM^inQ{
intil=10;
inti2=20;
stringstr="str";
Classic=newClassiQ;
Add(il);
AddWithRef(refi2);
Add(c.i);
StringConvert(str);
String(x)nvert(c);
Console.WriteLinc(i1);
Console.WriteLine(i2);
Console.VC'ritel.ine(c.i);
Console.WriteLine(str);
Console.WritcLine(c.str);
}
}
7.寫出程序的輸出結(jié)果
publicabstractclassA
publicAQ
Consolc.WritcLincCA*);
publicvirtualvoidFun。
(
Console.WriteLineC'A.Fun。");
)
)
publicclassB:A
{
publicBQ
|
Console.VCriccLincfB*);
}
pnhlirnewvnidFunQ
(
Console.WriteLineC'B.Fun()M);
}
publicstaticvoidMain。
|
Aa=newBQ;
a.FunQ;
}
}
8.寫出程序的輸出結(jié)果:
publicclassA
{
publicvirtualvoidFunl(inti)
|
Console.\X'riteLine(i);
}
publicvoidFun2(Aa)
{
a.Funl(l);
Funl(5);
publicclassB:A
publicoverridevoidI-'uni(inti)
{
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 職業(yè)病防治策略與風(fēng)險評估
- 中學(xué)生活教官培訓(xùn)制度
- 新入職治療師培訓(xùn)制度
- 師德師風(fēng)培訓(xùn)教育制度
- 質(zhì)量控制人員培訓(xùn)制度
- 路虎捷豹4s店培訓(xùn)制度
- 培訓(xùn)機(jī)構(gòu)決策制度及流程
- ?;沸聠T工崗前培訓(xùn)制度
- 數(shù)學(xué)教研培訓(xùn)制度及流程
- ct室業(yè)務(wù)知識培訓(xùn)制度
- 食品安全自查、從業(yè)人員健康管理、進(jìn)貨查驗(yàn)記錄、食品安全事故處置等保證食品安全的規(guī)章制度
- 榮辱觀教育主題班會
- 江西省九江市2024-2025學(xué)年高二上學(xué)期期末考試數(shù)學(xué)試題(含解析)
- JJF(贛) 036-2024 水泥凈漿流動度測定儀校準(zhǔn)規(guī)范
- 房屋買賣合同全文內(nèi)容
- 中醫(yī)基礎(chǔ)理論之八綱辨證課件
- 2024年西藏自治區(qū)中考數(shù)學(xué)試題卷(含答案解析)
- 11BS4排水工程華北標(biāo)圖集
- 《繼電保護(hù)智能運(yùn)維檢修 第5部分:在線監(jiān)測站端信息描述》編制說明
- 功能危險分析(FHA)
- 趣味實(shí)驗(yàn)牛頓擺
評論
0/150
提交評論