版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
.Net基礎(chǔ)知識(shí)什么是面向?qū)ο?/p>
面向?qū)ο驩O=
面向?qū)ο蟮姆治鯫OA+
面向?qū)ο蟮脑O(shè)計(jì)OOD+
面向?qū)ο蟮木幊蘋(píng)OP;
通俗的解釋就是萬(wàn)物皆對(duì)象,把所有的事物都看作一個(gè)個(gè)可以獨(dú)立的對(duì)象(單元),它們可以自己完成自己的功能,而不是像C那樣分成一個(gè)個(gè)函數(shù);
現(xiàn)在純正的OO語(yǔ)言主要是java和C#,C++也支持OO,C是面向過(guò)程的。闡述面向接口、面向?qū)ο蟆⒚嫦蚍矫婢幊痰膮^(qū)別面向?qū)ο蟛缓媒忉?,可以理解為以一切元素都是?duì)象,在設(shè)計(jì)時(shí)以對(duì)象為單位,考慮它的屬性及方法。設(shè)計(jì)中采用了封裝、繼承、抽象的手法面向接口本身就是面向?qū)ο蟮?,無(wú)所謂區(qū)別,只不過(guò)面向接口的好處是耦合性低面向方面Aspect-OrientedProgramming(AOP)就是大名鼎鼎的AOP。其實(shí)有點(diǎn)象struts里的攔截。
舉例:假設(shè)有在一個(gè)應(yīng)用系統(tǒng)中,有一個(gè)共享的數(shù)據(jù)必須被并發(fā)同時(shí)訪問(wèn),首先,將這個(gè)數(shù)據(jù)封裝在數(shù)據(jù)對(duì)象中,稱為DataClass,同時(shí),將有多個(gè)訪問(wèn)類,專門(mén)用于在同一時(shí)刻訪問(wèn)這同一個(gè)數(shù)據(jù)對(duì)象。為了完成上述并發(fā)訪問(wèn)同一資源的功能,需要引入鎖Lock的概念,也就是說(shuō),某個(gè)時(shí)刻,當(dāng)有一個(gè)訪問(wèn)類訪問(wèn)這個(gè)數(shù)據(jù)對(duì)象時(shí),這個(gè)數(shù)據(jù)對(duì)象必須上鎖Locked,用完后就立即解鎖unLocked,再供其它訪問(wèn)類訪問(wèn)。面向?qū)ο蟮乃枷胫饕ㄊ裁??繼承:子類擁有父類的所有數(shù)據(jù)和操作。封裝:用抽象的數(shù)據(jù)類型將數(shù)據(jù)和基于數(shù)據(jù)的操作封裝在一起,數(shù)據(jù)被保護(hù)在抽象數(shù)據(jù)類型內(nèi)。多態(tài):一個(gè)程序中同名的不同方法共存的情況。有兩種形式的多態(tài)–重載與重寫(xiě)。抽象類是否可以繼承實(shí)體類?抽象類可以繼承實(shí)體類,但是有個(gè)條件,條件是,實(shí)體類必須要有明確的構(gòu)造函數(shù)。當(dāng)類T只聲明了私有實(shí)例構(gòu)造函數(shù)時(shí),則在T的程序文本外部,是否可以從T派生出新的類,是否可以直接創(chuàng)建T的任何實(shí)例。不可以,不可以C#中有沒(méi)有靜態(tài)構(gòu)造函數(shù),如果有是做什么用的?
有.
靜態(tài)構(gòu)造函數(shù)用于初始化類。在創(chuàng)建第一個(gè)實(shí)例或引用任何靜態(tài)成員之前,將自動(dòng)調(diào)用靜態(tài)構(gòu)造函數(shù)來(lái)初始化類。靜態(tài)構(gòu)造函數(shù)既沒(méi)有訪問(wèn)修飾符,也沒(méi)有參數(shù)。在創(chuàng)建第一個(gè)實(shí)例或引用任何靜態(tài)成員之前,將自動(dòng)調(diào)用靜態(tài)構(gòu)造函數(shù)來(lái)初始化類。無(wú)法直接調(diào)用靜態(tài)構(gòu)造函數(shù)。在程序中,用戶無(wú)法控制何時(shí)執(zhí)行靜態(tài)構(gòu)造函數(shù)。靜態(tài)構(gòu)造函數(shù)的典型用途是:當(dāng)類使用日志文件時(shí),將使用這種構(gòu)造函數(shù)向日志文件中寫(xiě)入項(xiàng)。什么是.net?
.net是一種平臺(tái)和框架,.net
不是單純的語(yǔ)言也不是單純的工具,它是從底層平臺(tái)開(kāi)始構(gòu)建起來(lái)的一個(gè)整體框架請(qǐng)以圖示方式解釋.netframework?VB
C++
C#
Jscript
…
CommonLanguageSpecification
XMLWebservices
WebForms
WindowsForms
DataandXML
BaseClassLibrary
CLR
CLI
VisualStudio.NET
程序集與命名空間有什么不同?
命名空間是用于避免命名沖突,專用于組織代碼,當(dāng)代碼要在其他某個(gè)應(yīng)用程序中重用時(shí),可以降低復(fù)雜性。
程序集是重用代碼的一種方式驗(yàn)證控件不同:
可以將相同命名空間中的類部署到不同的程序集中,也可以命名空間中的類部署到一個(gè)程序集中命名空間程序集有邏輯編譯時(shí)機(jī)制有物理編譯時(shí)機(jī)制不是運(yùn)行時(shí)實(shí)體是運(yùn)行時(shí)實(shí)體為源代碼元素的名稱提供邏輯結(jié)構(gòu)為可執(zhí)行文件的運(yùn)行時(shí)提供物理結(jié)構(gòu)
什么是WEB控件?使用WEB控件有那些優(yōu)勢(shì)?
WEB控件是能拖放在WEB頁(yè)面上的控件
WEB控件分為:內(nèi)部控件,
列表控件,
復(fù)雜控件,?WEB控件優(yōu)勢(shì):
Web
控件是對(duì)象,與對(duì)象一樣,Web
控件擁有方法和屬性,并且響應(yīng)事件
一旦將
Web
控件包括在
Web
頁(yè)中,就可以設(shè)置其屬性并調(diào)用其方法
可以為
Web
控件編寫(xiě)服務(wù)器端代碼以響應(yīng)在客戶端上發(fā)生的事件ASP。NET中共有幾種類型的控件?各有什么區(qū)別?
WEB控件分為:內(nèi)部控件,
列表控件,
復(fù)雜控件,
驗(yàn)證控件
內(nèi)部控件:內(nèi)部控件的使用方法與
HTML
控件相同,它們映射到
HTML
元素并通過(guò)使用
runat="server"
屬性在服務(wù)器上執(zhí)行
列表控件:用于在
Web
頁(yè)中創(chuàng)建數(shù)據(jù)列表
復(fù)雜控件:當(dāng)希望控件擁有復(fù)雜的功能或使用
HTML
元素?zé)o法創(chuàng)建的功能豐富的用戶界面時(shí),可以使用復(fù)雜控件
驗(yàn)證控件:輸入控件的數(shù)據(jù)需要進(jìn)行準(zhǔn)確性和取值范圍方面的檢查WEB控件可以激發(fā)服務(wù)端事件,請(qǐng)談?wù)劮?wù)端事件是怎么發(fā)生并解釋其原理?自動(dòng)傳回是什么?為什么要使用自動(dòng)傳回。
由于ASP。NET是Web頁(yè)面和服務(wù)端分離的,因此要產(chǎn)生了服務(wù)端事件.
使用_doPostBack函數(shù)能夠自動(dòng)地把客戶端的javascript事件轉(zhuǎn)變?yōu)橐粋€(gè)服務(wù)器端的事件,A框架自動(dòng)為我們處理有關(guān)的細(xì)節(jié)簡(jiǎn)化工作。
使用自動(dòng)傳回的特性:在檢測(cè)到一個(gè)特定用戶動(dòng)作時(shí),自動(dòng)傳回能夠?qū)⑦@個(gè)頁(yè)面?zhèn)骰胤?wù)器以處理事件.
在web控件發(fā)生事件時(shí),客戶端采用提交的形式將數(shù)據(jù)交回服務(wù)端,服務(wù)端先調(diào)用Page_Load事件,然后根據(jù)傳回的狀態(tài)信息自動(dòng)調(diào)用服務(wù)端事件自動(dòng)傳回是當(dāng)我們?cè)邳c(diǎn)擊客戶端控件時(shí),采用提交表單的形式將數(shù)據(jù)直接傳回到務(wù)端。只有通過(guò)自動(dòng)傳回才能實(shí)現(xiàn)服務(wù)端事件的機(jī)制,如果沒(méi)有自動(dòng)回傳機(jī)制就只能調(diào)用客戶端事件,而不能調(diào)用服務(wù)端事件請(qǐng)解釋ASP.NET中以什么方式進(jìn)行數(shù)據(jù)驗(yàn)證。
A
中有非空驗(yàn)證,比較驗(yàn)證,取值范圍驗(yàn)證,正則表達(dá)式驗(yàn)證及客戶自定義驗(yàn)證五大控件,另還有一個(gè)集中驗(yàn)證信息處理控件什么是ASP.Net中的用戶控件用戶控件是能夠在其中放置標(biāo)記和
Web
服務(wù)器控件的容器。然后,可以將用戶控件作為一個(gè)單元對(duì)待,為其定義屬性和方法。用戶控件以。ascx為擴(kuò)展名,可以拖到不同的頁(yè)面中調(diào)用,以節(jié)省代碼。比如登陸可能在多個(gè)頁(yè)面上有,就可以做成用戶控件,但是有一個(gè)問(wèn)題就是用戶控件拖到不同級(jí)別的目錄下后里面的圖片等的相對(duì)路徑會(huì)變得不準(zhǔn)確,需要自已寫(xiě)方法調(diào)整。問(wèn)這樣的問(wèn)題,一般是迷惑你。因?yàn)樾率诌€是分不清楚用戶控件和服務(wù)器控件(也稱自定義控件),用戶控件一般用在內(nèi)容多為靜態(tài),或者少許會(huì)改變的情況下,用的比較大,類似ASP中的include。。但是功能要強(qiáng)大的多。WEB控件及HTML服務(wù)端控件能否調(diào)用客戶端方法?如果能,請(qǐng)解釋如何調(diào)用?可以調(diào)用例如:<asp:TextBoxid="TextBox1"onclick="clientfunction();"runat="server"></asp:TextBox><INPUTid="Button2"value="Button"name="Button2"runat="server"onclick="clientfunction();">C#,Java
和
c++的特點(diǎn),有什么相同的地方,不同的地方,
C#分別從c++和java中吸取了他們那些優(yōu)點(diǎn)?C#看起來(lái)與Java有著驚人的相似;它包括了諸如單一繼承,界面,與Java幾乎同樣的語(yǔ)法,和編譯成中間代碼再運(yùn)行的過(guò)程.但是C#與Java有著明顯的不同,它借鑒了Delphi的一個(gè)特點(diǎn),與COM(組件對(duì)象模型)是直接集成。微軟c#語(yǔ)言定義主要是從C和C++繼承而來(lái)的,而且語(yǔ)言中的許多元素也反映了這一點(diǎn).C#在設(shè)計(jì)者從C++繼承的可選選項(xiàng)方面比Java要廣泛一些(比如說(shuō)
structs),它還增加了自己新的特點(diǎn)(比方說(shuō)源代碼版本定義).C#從Java繼承而來(lái)的特點(diǎn)類:在C#中類的聲明與Java很相似。特點(diǎn)看起來(lái)與Java相比沒(méi)有變化.布爾運(yùn)算:條件表達(dá)式的結(jié)果是布爾數(shù)據(jù)類型,布爾數(shù)據(jù)類型是這種語(yǔ)言中獨(dú)立的一種數(shù)據(jù)類型.從布爾類型到其他類型沒(méi)有直接的轉(zhuǎn)換過(guò)程.布爾常量true和false是C#中的關(guān)鍵字.錯(cuò)誤處理:如Java中那樣,通過(guò)拋出和捕捉異常對(duì)象來(lái)管理錯(cuò)誤處理過(guò)程.內(nèi)存管理:由底層.NET框架進(jìn)行自動(dòng)內(nèi)存垃圾回收.C#從C和C++繼承的特點(diǎn)編譯:程序直接編譯成標(biāo)準(zhǔn)的二進(jìn)制可執(zhí)行形式.結(jié)構(gòu)體:一個(gè)C#的結(jié)構(gòu)體與C++的結(jié)構(gòu)體是相似的,因?yàn)樗軌虬瑪?shù)據(jù)聲明和方法.但是,不象C++,C#結(jié)構(gòu)體與類是不同的而且不支持繼承.但是,與Java相同的是,一個(gè)結(jié)構(gòu)體可以實(shí)現(xiàn)界面.預(yù)編譯:C#中存在預(yù)編譯指令支持條件編譯,警告,錯(cuò)誤報(bào)告和編譯行控制.#errorC#獨(dú)有的特點(diǎn)中間代碼:微軟在用戶選擇何時(shí)MSIL應(yīng)該編譯成機(jī)器碼的時(shí)候是留了很大的余地.微軟公司很小心的聲稱MSIL不是解釋性的,而是被編譯成了機(jī)器碼.它也明白許多--如果不是大多數(shù)的話--程序員認(rèn)為Java程序要不可避免的比C編寫(xiě)的任何東西都要慢.而這種實(shí)現(xiàn)方式?jīng)Q定了基于MSIL的程序(指的是用
C#,VisualBasic,"ManagedC++"--C++的一個(gè)符合CLS的版本--等語(yǔ)言編寫(xiě)的程序)將在性能上超過(guò)"解釋性的"Java代碼.當(dāng)然,這一點(diǎn)還需要得到事實(shí)證明,因?yàn)镃#和其他生成MSIL的編譯器還沒(méi)有發(fā)布.但是JavaJIT編譯器的普遍存在使得Java和C#在性能上相對(duì)相同.象"C#是編譯語(yǔ)言而Java是解釋性的,"之類的聲明只是商業(yè)技巧.Java的中間代碼和
MSIL都是中間的匯編形式的語(yǔ)言,它們?cè)谶\(yùn)行時(shí)或其它的時(shí)候被編譯成機(jī)器代碼.命名空間中的聲明:當(dāng)你創(chuàng)建一個(gè)程序的時(shí)候,你在一個(gè)命名空間里創(chuàng)建了一個(gè)或多個(gè)類.同在這個(gè)命名空間里(在類的外面)你還有可能聲明界面,枚舉類型和結(jié)構(gòu)體.必須使用using關(guān)鍵字來(lái)引用其他命名空間的內(nèi)容.基本的數(shù)據(jù)類型:C#擁有比C,C++或者Java更廣泛的數(shù)據(jù)類型.這些類型是bool,byte,ubyte,short,ushort,int,uint,long,ulong,float,double,和decimal.象Java一樣,所有這些類型都有一個(gè)固定的大小.又象C和C++一樣,每個(gè)數(shù)據(jù)類型都有有符號(hào)和無(wú)符號(hào)兩種類型.與
Java相同的是,一個(gè)字符變量包含的是一個(gè)16位的Unicode字符.C#新的數(shù)據(jù)類型是decimal數(shù)據(jù)類型,對(duì)于貨幣數(shù)據(jù),它能存放28位10
進(jìn)制數(shù)字.兩個(gè)基本類:一個(gè)名叫object的類是所有其他類的基類.而一個(gè)名叫string的類也象object一樣是這個(gè)語(yǔ)言的一部分.作為語(yǔ)言的一部分存在意味著編譯器有可能使用它--無(wú)論何時(shí)你在程序中寫(xiě)入一句帶引號(hào)的字符串,編譯器會(huì)創(chuàng)建一個(gè)string對(duì)象來(lái)保存它.參數(shù)傳遞:方法可以被聲明接受可變數(shù)目的參數(shù).缺省的參數(shù)傳遞方法是對(duì)基本數(shù)據(jù)類型進(jìn)行值傳遞.ref關(guān)鍵字可以用來(lái)強(qiáng)迫一個(gè)變量通過(guò)引用傳遞,這使得一個(gè)變量可以接受一個(gè)返回值.out關(guān)鍵字也能聲明引用傳遞過(guò)程,與ref不同的地方是,它指明這個(gè)參數(shù)并不需要初始值.與COM
的集成:C#對(duì)Windows程序最大的賣(mài)點(diǎn)可能就是它與COM的無(wú)縫集成了,COM就是微軟的Win32組件技術(shù).實(shí)際上,最終有可能在任何.NET語(yǔ)言里編寫(xiě)COM客戶和服務(wù)器端.C#編寫(xiě)的類可以子類化一個(gè)以存在的COM組件;生成的類也能被作為一個(gè)COM組件使用,然后又能使用,比方說(shuō),JScript語(yǔ)言子類化它從而得到第三個(gè)COM組件.這種現(xiàn)象的結(jié)果是導(dǎo)致了一個(gè)運(yùn)行環(huán)境的產(chǎn)生,在這個(gè)環(huán)境里的組件是網(wǎng)絡(luò)服務(wù),可用用任何.NET語(yǔ)言子類化.索引下標(biāo):一個(gè)索引與屬性除了不使用屬性名來(lái)引用類成員而是用一個(gè)方括號(hào)中的數(shù)字來(lái)匿名引用(就象用數(shù)組下標(biāo)一樣)以外是相似的.代理和反饋:一個(gè)代理對(duì)象包括了訪問(wèn)一個(gè)特定對(duì)象的特定方法所需的信息.只要把它當(dāng)成一個(gè)聰明的方法指針就行了.代理對(duì)象可以被移動(dòng)到另一個(gè)地方,然后可以通過(guò)訪問(wèn)它來(lái)對(duì)已存在的方法進(jìn)行類型安全的調(diào)用.一個(gè)反饋方法是代理的特例.event關(guān)鍵字用在將在事件發(fā)生的時(shí)候被當(dāng)成代理調(diào)用的方法聲明中.在C#中,stringstr=null與stringstr=“”的區(qū)別。stringstr=null是不給他分配內(nèi)存空間,而stringstr=""給它分配長(zhǎng)度為空字符串的內(nèi)存空怎樣理解靜態(tài)變量?靜態(tài)成員和非靜態(tài)成員的區(qū)別?靜態(tài)變量屬于類,而不屬于對(duì)象;并對(duì)所有對(duì)象所享;靜態(tài)成員在加類的時(shí)候就被加載。靜態(tài)成員和非靜態(tài)成員的區(qū)別?
靜態(tài)變量使用
static
修飾符進(jìn)行聲明,靜態(tài)成員在加類的時(shí)候就被加載(在類被實(shí)例化時(shí)創(chuàng)建,哪個(gè)對(duì)),通過(guò)類進(jìn)行訪問(wèn)
不帶有static
修飾符聲明的變量稱做非靜態(tài)變量,在對(duì)象被實(shí)例化時(shí)創(chuàng)建,通過(guò)對(duì)象進(jìn)行訪問(wèn)
一個(gè)類的所有實(shí)例的同一靜態(tài)變量都是同一個(gè)值,同一個(gè)類的不同實(shí)例的同一非靜態(tài)變量可以是不同的值
靜態(tài)函數(shù)的實(shí)現(xiàn)里不能使用非靜態(tài)成員,如非靜態(tài)變量、非靜態(tài)函數(shù)等DataReader和DataSet的異同DataReader和DataSet最大的區(qū)別在于,DataReader使用時(shí)始終占用SqlConnection,在線操作數(shù)據(jù)庫(kù),任何對(duì)SqlConnection的操作都會(huì)引發(fā)DataReader的異常,因?yàn)镈ataReader每次只在內(nèi)存中加載一條數(shù)據(jù),所以占用的內(nèi)存是很小的,因?yàn)镈ataReader的特殊性和高性能。所以DataReader是只進(jìn)的,你讀了第一條后就不能再去讀取第一條了。DataSet則是將數(shù)據(jù)一次性加載在內(nèi)存中。拋棄數(shù)據(jù)庫(kù)連接,讀取完畢即放棄數(shù)據(jù)庫(kù)連接,因?yàn)镈ataSet將數(shù)據(jù)全部加載在內(nèi)存中。所以比較消耗內(nèi)存,但是確比DataReader要靈活,可以動(dòng)態(tài)的添加行,列,數(shù)據(jù)。對(duì)數(shù)據(jù)庫(kù)進(jìn)行回傳更新操作。簡(jiǎn)述靜態(tài)類和靜態(tài)成員
靜態(tài)類中的成員都必須是靜態(tài)的。靜態(tài)類無(wú)構(gòu)造方法,并且是密封類無(wú)法被繼承。
靜態(tài)成員訪問(wèn)時(shí)只能通過(guò)類名來(lái)訪問(wèn),不能通過(guò)對(duì)象訪問(wèn)(和JAVA有區(qū)別),this也無(wú)法訪問(wèn)靜態(tài)成員。描述接口的作用充當(dāng)類的功能界面,接口里的成員屬于抽象描述,必須通過(guò)類的實(shí)現(xiàn)才能使用。如:某個(gè)項(xiàng)目有多個(gè)模塊組成,每個(gè)模塊由一個(gè)開(kāi)發(fā)者完成,開(kāi)發(fā)者只需編寫(xiě)完模塊功能實(shí)現(xiàn)后,留下的接口供其他人使用。其他人在程序中,使用接口時(shí),只需知道接口的功能,不了解如何實(shí)現(xiàn)。當(dāng)功能模塊無(wú)法滿足需要或功能模塊的需求變更時(shí),程序員只需將該功能模塊的實(shí)現(xiàn)代碼進(jìn)行修改和擴(kuò)充,而其他調(diào)用接口的程序無(wú)須改動(dòng)。接口的這種應(yīng)用模式成為brige模式(即意圖和實(shí)現(xiàn)分離)接口反映了面向?qū)ο蟮亩鄳B(tài)特征,即通過(guò)相同方法得到不同實(shí)現(xiàn)。接口也反映了面向?qū)ο蟮姆庋b特征,使用者可以不清楚接口成員的實(shí)現(xiàn)細(xì)節(jié)。注意:因?yàn)榻涌诔蓡T默認(rèn)的訪問(wèn)權(quán)限是public,所以在實(shí)現(xiàn)接口時(shí),類的成員必須為public,且方法名和參數(shù)必須一致。描述抽象類
用abstract修飾的類。抽象類可以包含實(shí)現(xiàn)的成員。未實(shí)現(xiàn)的成員隱含的是virtual屬性,子類實(shí)現(xiàn)時(shí)必須用override關(guān)鍵字。請(qǐng)解釋接口的顯式實(shí)現(xiàn)有什么意義?
接口是其他類型為確保它們支持某些操作而實(shí)現(xiàn)的引用類型。接口從不直接創(chuàng)建而且沒(méi)有實(shí)際的表示形式,其他類型必須轉(zhuǎn)換為接口類型。一個(gè)接口定義一個(gè)協(xié)定。實(shí)現(xiàn)接口的類或結(jié)構(gòu)必須遵守其協(xié)定。接口可以包含方法、屬性、索引器和事件作為成員。
在項(xiàng)目中為什么使用接口?接口的好處是什么?什么是面向接口開(kāi)發(fā)?
接口只是一種約束。使用
interface
去定義某些特定的功能,為的是不要將代碼寫(xiě)死在自定義類里,以便在系統(tǒng)開(kāi)發(fā)、事后維護(hù)、功能擴(kuò)充
上更有擴(kuò)展性。
接口用于描述一組類的公共方法/公共屬性.
它不實(shí)現(xiàn)任何的方法或?qū)傩?,只是告訴繼承它的類至少要實(shí)現(xiàn)哪些功能,繼承它的類可以增加自己的方法.
使用接口可以使繼承它的類:
命名統(tǒng)一/規(guī)范,易于維護(hù)。提供永遠(yuǎn)的接口。
當(dāng)類增加時(shí),現(xiàn)有接口方法能夠滿足繼承類中的大多數(shù)方法,沒(méi)必要重新給新類設(shè)計(jì)一組方法,也節(jié)省了代碼,提高了開(kāi)發(fā)效率。
面向接口開(kāi)發(fā)的好處有結(jié)構(gòu)清晰,類間通信簡(jiǎn)單易懂,擴(kuò)展性好,提高復(fù)用性等等。
面向接口開(kāi)發(fā)就是指面向抽象協(xié)議編程,實(shí)現(xiàn)者在實(shí)現(xiàn)時(shí)要嚴(yán)格按協(xié)議來(lái)辦。接口和類有什么異同。不同點(diǎn):1、不能直接實(shí)例化接口。2、接口只包含方法或?qū)傩缘穆暶?,不包含方法的?shí)現(xiàn)。3、接口可以多繼承,類只能單繼承。4、類有分部類的概念,定義可在不同的源文件之間進(jìn)行拆分。5、表達(dá)的含義不同,接口主要定義一種規(guī)范,統(tǒng)一調(diào)用方法,也就是規(guī)范類,約束類,類是方法功能的實(shí)現(xiàn)和集合相同點(diǎn):1、接口、類和結(jié)構(gòu)都可以從多個(gè)接口繼承。2、接口類似于抽象基類:繼承接口的任何非抽象類型都必須實(shí)現(xiàn)接口的所有成員。3、接口和類都可以包含事件、索引器、方法和屬性。您在什么情況下會(huì)用到虛方法或抽象類,接口?
如果某個(gè)方法可能性在派生類中會(huì)被重寫(xiě)。這時(shí)就將該方法寫(xiě)為虛方法。
抽象類:是一個(gè)類型,與派生類之間的關(guān)系是一個(gè)“ISA”的關(guān)系。用來(lái)做基類,抽象類不能創(chuàng)建對(duì)象,類中包括抽象方法和實(shí)例方法。
接口:是設(shè)計(jì)一個(gè)規(guī)范,描述了Cando
;與實(shí)現(xiàn)類之間是中”LINEA
的關(guān)系,C#中接口不能包含字段訪問(wèn)修飾符。對(duì)比抽象基類和接口的使用
抽象類能有具體實(shí)現(xiàn),而接口只定義行為規(guī)范,不能有具體實(shí)現(xiàn)。一個(gè)類只能繼承一個(gè)父類,但能實(shí)現(xiàn)多個(gè)接口。
C#中的接口和抽象類有什么異同。你選擇使用接口和抽象類的依據(jù)是什么?
1、繼承:接口支持多繼承;抽象類不能實(shí)現(xiàn)多繼承。
2、表達(dá)的概念:接口用于規(guī)范,抽象類用于共性。抽象類是一類事物的高度聚合,那么對(duì)于繼承抽象類的子類來(lái)說(shuō),對(duì)于抽象類來(lái)說(shuō),屬于"是"的關(guān)系;而接口是定義行為規(guī)范,因此對(duì)于實(shí)現(xiàn)接口的子類來(lái)說(shuō),相對(duì)于接口來(lái)說(shuō),是"行為需要按照接口來(lái)完成"。
3、方法實(shí)現(xiàn):對(duì)抽象類中的方法,即可以給出實(shí)現(xiàn)部分,也可以不給出;而接口的方法(抽象規(guī)則)都不能給出實(shí)現(xiàn)部分,接口中方法不能加修飾符。
4、子類重寫(xiě):繼承類對(duì)于兩者所涉及方法的實(shí)現(xiàn)是不同的。繼承類對(duì)于抽象類所定義的抽象方法,可以不用重寫(xiě),也就是說(shuō),可以延用抽象類的方法;而對(duì)于接口類所定義的方法或者屬性來(lái)說(shuō),在繼承類中必須重寫(xiě),給出相應(yīng)的方法和屬性實(shí)現(xiàn)。
5、新增方法的影響:在抽象類中,新增一個(gè)方法的話,繼承類中可以不用作任何處理;而對(duì)于接口來(lái)說(shuō),則需要修改繼承類,提供新定義的方法。
6、接口可以作用于值類型(枚舉可以實(shí)現(xiàn)接口)和引用類型;抽象類只能作用于引用類型。
7、接口不能包含字段和已實(shí)現(xiàn)的方法,接口只包含方法、屬性、索引器、事件的簽名;抽象類可以定義字段、屬性、包含有實(shí)現(xiàn)的方法。
8、接口可以用于支持回調(diào)(CallBack);抽象類不能實(shí)現(xiàn)回調(diào),因?yàn)槔^承不支持。如下給出兩者的簡(jiǎn)單對(duì)比表格。
接口
抽象類多繼承支持不支持類型限制沒(méi)有有,只能是引用類型方法實(shí)現(xiàn)繼承類型中必須給出方法實(shí)現(xiàn)繼承類中可以不給出擴(kuò)展性比較麻煩相對(duì)比較靈活多層繼承比較麻煩,需要借助虛函數(shù)比較靈活如何選擇:1、看是否需要多繼承,如果需要就只能使用接口2、看你在累里定義的方法是否需要有實(shí)現(xiàn)的代碼,如果要,就使用抽象類3、使不同的類型有共同的特性的時(shí)候使用接口,因?yàn)樗С侄嗬^承,只想從一個(gè)類型繼承出不同的行為的子類的時(shí)候使用抽象類,可以在基類里有代碼實(shí)現(xiàn)。
從實(shí)現(xiàn)接口和現(xiàn)實(shí)抽象類的方法來(lái)看,接口是死的,抽象類是活的,當(dāng)然實(shí)現(xiàn)接口的類是活的。結(jié)構(gòu)和類的區(qū)別簡(jiǎn)單的說(shuō)成class可以被實(shí)例化,屬于引用類型struct屬于值類型,1)、類型,空間分配。結(jié)構(gòu)是值類型,是分配在內(nèi)存的棧上的.類時(shí)引用類型,,是分配在內(nèi)存的堆上的。結(jié)構(gòu)實(shí)例化可以不用new,即使用new操作也不會(huì)在堆里分配內(nèi)存。作參數(shù)是按值傳遞,類時(shí)引用傳遞,變量用完自動(dòng)解除內(nèi)存分配,類需要垃圾回收期2)、基類。結(jié)構(gòu)繼承自System.ValueType類,因此不具多態(tài)性。但是注意,System.ValueType是個(gè)引用類型。類繼承自System.Object類;3)、職能。struct常用于存儲(chǔ)數(shù)據(jù);而class表現(xiàn)為行為4)、結(jié)構(gòu)沒(méi)有類的特性,不支持繼承。但可以實(shí)現(xiàn)接口。5)、結(jié)構(gòu)無(wú)法聲明無(wú)參的構(gòu)造函數(shù),但可以聲明有參的構(gòu)造函數(shù)6)、結(jié)構(gòu)的實(shí)例成員不能直接賦初值,必須通過(guò)構(gòu)造函數(shù)來(lái)賦值,但靜態(tài)成員可以直接賦初值7)、無(wú)抽象結(jié)構(gòu),但有抽象類(abstract)8)、class
可以聲明protected成員、virtual成員、sealed成員和override成員;而struct不可以,但是值得注意的是,struct
可以重載System.Object的3個(gè)虛方法,Equals()、ToString()和GetHashTable()。
接口與繼承的區(qū)別?什么時(shí)候使用接口,什么時(shí)候使用繼承?(1)接口定義一個(gè)類型需要實(shí)現(xiàn)的方法,屬性,索引和事件,包括可能的參數(shù)類型和返回值類型,而把具體的實(shí)現(xiàn)交由相應(yīng)的類或結(jié)構(gòu)來(lái)做,從而為組件提供多態(tài)能力。(2)繼承常用于在一個(gè)現(xiàn)有父類的基礎(chǔ)上的功能擴(kuò)展,往往是我們將幾個(gè)類中相同的成員提取出來(lái)放在父類中實(shí)現(xiàn),然后在各自的子類中加以繼承。(3)接口可以實(shí)現(xiàn)多接口繼承,而繼承只能實(shí)現(xiàn)單繼承。(4)實(shí)現(xiàn)繼承可繼承父類型的實(shí)現(xiàn),由于接口中沒(méi)有定義方法的實(shí)現(xiàn),因此必須實(shí)現(xiàn)繼承后該接口的所有方法。(5)為父類型添加方法可能不影響使用繼承自該類型實(shí)現(xiàn)的用戶,而為接口添加方法導(dǎo)致用戶必須為新方法添加實(shí)現(xiàn)。(6)當(dāng)派生類和基類是is-a的關(guān)系是使用"繼承",典型案例"蘋(píng)果
is-a
水果",存在can-do的關(guān)系時(shí)使用"接口"重載(Overload)和覆寫(xiě)(Override)的區(qū)別
簡(jiǎn)單的說(shuō),一個(gè)是同一個(gè)函數(shù)的幾種形式,一個(gè)是重寫(xiě)父類函數(shù),
重載:當(dāng)類包含兩個(gè)名稱相同但簽名不同(方法名相同,參數(shù)列表不相同)的方法時(shí)發(fā)生方法重載。用方法重載來(lái)提供在語(yǔ)義上完成相同而功能不同的方法。
覆寫(xiě):在類的繼承中使用,通過(guò)覆寫(xiě)子類方法可以改變父類虛方法的實(shí)現(xiàn)。區(qū)別:
1、方法的覆蓋是子類和父類之間的關(guān)系,是垂直關(guān)系;方法的重載是同一個(gè)類中方法之間的關(guān)系,是水平關(guān)系。
2、覆蓋只能由一個(gè)方法,或只能由一對(duì)方法產(chǎn)生關(guān)系;方法的重載是多個(gè)方法之間的關(guān)系。
3、覆蓋要求參數(shù)列表相同;重載要求參數(shù)列表不同。
4、覆蓋關(guān)系中,調(diào)用那個(gè)方法體,是根據(jù)對(duì)象的類型(對(duì)象對(duì)應(yīng)存儲(chǔ)空間類型)來(lái)決定;重載關(guān)系,是根據(jù)調(diào)用時(shí)的實(shí)參表與形參表來(lái)選擇方法體的。<%#%>
和
<%%>
有什么區(qū)別?<%#%>表示綁定的數(shù)據(jù)源<%%>是服務(wù)器端代碼塊值類型和引用類型的區(qū)別?寫(xiě)出C#的樣例代碼。值類型包括簡(jiǎn)單類型、結(jié)構(gòu)體類型和枚舉類型,引用類型包括自定義類、數(shù)組、接口、委托等1、賦值方式:將一個(gè)值類型變量賦給另一個(gè)值類型變量時(shí),將復(fù)制包含的值。這與引用類型變量的賦值不同,引用類型變量的賦值只復(fù)制對(duì)象的引用,而不復(fù)制對(duì)象本身。2、派生:值類型不可能派生出新的類型,所有的值類型均隱式派生自
System.ValueType。但與引用類型相同的是,結(jié)構(gòu)也可以實(shí)現(xiàn)接口。3、null:與引用類型不同,值類型不可能包含
null
值。然而,可空類型功能允許將
null
賦給值類型。4、每種值類型均有一個(gè)隱式的默認(rèn)構(gòu)造函數(shù)來(lái)初始化該類型的默認(rèn)值。值類型主要由兩類組成:結(jié)構(gòu)、枚舉結(jié)構(gòu)分為以下幾類:Numeric(數(shù)值)類型、整型、浮點(diǎn)型、decimal、bool、用戶定義的結(jié)構(gòu)。引用類型的變量又稱為對(duì)象,可存儲(chǔ)對(duì)實(shí)際數(shù)據(jù)的引用。聲明引用類型的關(guān)鍵字:class、interface、delegate、內(nèi)置引用類型:
object、string5、值類型存貯在棧中,而引用類型存貯在動(dòng)態(tài)的堆中,棧是先進(jìn)先出的有系統(tǒng)管理的空間,而堆是由應(yīng)用程序控制的可隨時(shí)申請(qǐng)和釋放該空間,在Donnet中一般情況下有垃圾收集器處理,他們的不同導(dǎo)致在編程上的不同。例:"a=null"的意思是:a的引用置為空但此時(shí)StringBuilder的堆空間并沒(méi)有被釋放,因此在此之后,輸出b時(shí),仍然可以輸出mxhusing
System;using
System.Text;class
EventDel{
static
void
Main(string[]args)
{
StringBuilder
a=new
StringBuilder();//將StringBuilder的一個(gè)首地址傳給a
StringBuilder
b=a;
//將StringBuilder的一個(gè)首地址傳給b
b.Append("mxh");
Console.WriteLine(a);
a=null;
Console.WriteLine(b);
}}輸出結(jié)果:mxhmxh請(qǐng)按任意鍵繼續(xù)...
C#中的委托是什么?如何理解委托?簡(jiǎn)單的說(shuō):委托是一種方法容器,里面可以裝載若干個(gè)具有相同簽名的方法引用地址,那么調(diào)用委托,就相當(dāng)于同時(shí)調(diào)用了該容器內(nèi)的所有方法。委托可以看做一種新的對(duì)象類型,具有面向?qū)ο蟮奶攸c(diǎn),定義時(shí)可簽名接收參數(shù),委托實(shí)例化時(shí),可以把方法名作為一個(gè)參數(shù)傳遞給委托對(duì)象,委托可以理解為指向函數(shù)的引用。生成的委托對(duì)象可以代理所傳遞的方法,可以接收方法的參數(shù)。也就是定義了委托,可以在不用調(diào)用原方法的情況下,調(diào)用那個(gè)方法
例:例:
public
delegate
string
MyDel(string
nm,string
pwd);
//定義委托簽名接收兩個(gè)參數(shù)
static
void
Main(string[]args)
{
MyDel
md=new
MyDel(方法名)
//定義委托對(duì)象,其引用變量指向參數(shù)中的方法
string
result=md("張三","1234");
//調(diào)用委托對(duì)象,傳遞所指方法的參數(shù)
}委托類似于
C或
C++中的函數(shù)指針。但不同的是委托是面向?qū)ο?、類型安全的。委托允許將方法作為參數(shù)進(jìn)行傳遞。委托可用于定義回調(diào)方法。委托可以鏈接在一起;創(chuàng)建多個(gè)對(duì)象,使用“+=”累加到同一個(gè)委托對(duì)象上的引用上,例如,可以對(duì)一個(gè)事件調(diào)用多個(gè)方法。public
delegate
string
MyDel(string
nm,string
pwd);
//定義委托簽名接收兩個(gè)參數(shù)static
void
Main(string[]args){
MyDelmd=new
MyDel(方法1);
//委托對(duì)象,其引用變量指向參數(shù)中的方法
md+=new
MyDel(方法2);
md+=new
MyDel(方法3);
string
result=md("張三","1234");
//調(diào)用委托對(duì)象,傳遞所指方法的參數(shù)}方法不需要與委托簽名精確匹配。有關(guān)更多信息,請(qǐng)參見(jiàn)協(xié)變和逆變。C#2。0
版引入了匿名方法的概念,此類方法允許將代碼塊作為參數(shù)傳遞,以代替單獨(dú)定義的方法。如:using
System;class
Name{
private
string
pName;
//定義委托類型
public
delegate
void
myEventHandler(object
sender,
NameEventArgs
e);
//定義Get事件
public
event
myEventHandler
Get;
internal
string
Text
{
get
{
return
this.pName;}
set{
//2
this.pName=value;
this.OnGet(new
NameEventArgs("Text屬性被更改了"));
}
}
void
OnGet(NameEventArgs
e)//3
{
this.Get(this,e);
//觸發(fā)事件
}
public
override
string
ToString()
{
return
"Name類的對(duì)象";
}
public
class
NameEventArgs
:
EventArgs
//自定義事件信息類
{
string
pArgs;
public
NameEventArgs(string
s)
{
pArgs=s;
}
public
override
string
ToString()
{
return
pArgs;}
}}class
EventDel{
static
void
Main(string[]args)
{
Name
myname=
new
Name();
myname.Get+=
new
Name.myEventHandler(myname_get);
//4
myname.Text=
"張三";//1
}
//用于訂閱事件的myname_get()方法
static
void
myname_get(object
sender,
Name.NameEventArgs
e)
//5
{
//輸出事件信息,和事件發(fā)布者的屬性
Console.WriteLine("事件信息:{0}",e.ToString());
Console.WriteLine("事件發(fā)布者:{0}",sender.ToString());
Console.WriteLine("你輸入的名字是:{0}",((Name)sender).Text);
}}結(jié)果:事件信息:Text屬性被更改了事件發(fā)布者:Name類的對(duì)象你輸入的名字是:張三請(qǐng)按任意鍵繼續(xù)...使用匿名方法,直接將方法體的代碼和委托對(duì)象關(guān)聯(lián)而不需要單獨(dú)定義此方法class
EventDel{
static
void
Main(string[]args)
{
Name
myname=new
Name();
myname.Get+=
delegate(object
sender,
Name.NameEventArgs
e)
{
};
}}也可以用Lambda表達(dá)式把delegate隱藏class
EventDel{
static
void
Main(string[]args)
{
Name
myname=new
Name();
myname.Get+=(object
sender,
Name.NameEventArgs
e)=>
{
};
}}
事件是不是一種委托?委托是一種安全的函數(shù)指針,事件是一種消息機(jī)制委托與事件是什么關(guān)系?為什么要使用委托
委托提供了封裝方法的方式,事件是某動(dòng)作已發(fā)生的說(shuō)明,事件是建立于委托之上的
程序運(yùn)行時(shí)同一個(gè)委托能夠用來(lái)調(diào)用不同的方法,只要改變它的引用方法即可,因此委托調(diào)節(jié)器用的方法不是在編譯時(shí)決定的,而是在運(yùn)行時(shí)確定的.請(qǐng)解釋這種語(yǔ)法現(xiàn)象Session[“name”]=20;
給類的索引器賦值.ASP.Net的身份驗(yàn)證方式有哪些?分別是什么原理?A的身份驗(yàn)證有有三種,分別是"Windows|Forms|Passport",window驗(yàn)證:
ASP.NET
會(huì)結(jié)合信息服務(wù)
(IIS),為每個(gè)用戶開(kāi)啟window帳號(hào),驗(yàn)證其身份,安全性較高。forms驗(yàn)證:為每個(gè)登陸用戶寫(xiě)入一個(gè)身份驗(yàn)證票據(jù),在web使用最廣的驗(yàn)證方式,靈活方便。passport驗(yàn)證:由
Microsoft
提供的集中身份驗(yàn)證服務(wù),該服務(wù)為成員站點(diǎn)提供單一登錄和核心配置什么是code-Behind技術(shù)。就是代碼隱藏,在ASP.NET中通過(guò)ASPX頁(yè)面指向CS文件的方法實(shí)現(xiàn)顯示邏輯和處理邏輯的分離,這樣有助于web應(yīng)用程序的創(chuàng)建。比如分工,美工和編程的可以個(gè)干各的,不用再像以前asp那樣都代碼和html代碼混在一起,難以維護(hù)。新建一個(gè)VS.Net下的項(xiàng)目。。看到ASPX,RESX和CS三個(gè)后綴的文件,這個(gè)就是代碼分離。實(shí)現(xiàn)了HTML代碼和服務(wù)器代碼分離,方便代碼編寫(xiě)和整理?;顒?dòng)目錄?;顒?dòng)目錄是window2000的最重要的功能。可以將用戶信息全部集成起來(lái),登陸以后可以訪問(wèn)多個(gè)不同的網(wǎng)絡(luò)服務(wù)。?;顒?dòng)目錄包括兩個(gè)方面:目錄和與目錄相關(guān)的服務(wù)。安裝了活動(dòng)目錄的計(jì)算機(jī)稱為“域控制器”,對(duì)于用戶而言,只要加入并接受域控制器的管理就可以在一次登錄之后全網(wǎng)使用,方便地訪問(wèn)活動(dòng)目錄提供的網(wǎng)絡(luò)資源。對(duì)于管理員,則可以通過(guò)對(duì)活動(dòng)目錄的集中管理就能夠管理全網(wǎng)的資源。.Net中讀寫(xiě)XML的類都?xì)w屬于哪些命名空間?System.XML命名空間,任何類型的項(xiàng)目都可以通過(guò)System.XML命名空間進(jìn)行XML處理。使用System.Xml命名空間中的XmlDocument類來(lái)操作xml的數(shù)據(jù)C#中
Socket所在的命名空間是?System.Net.Sockets。
Socket
類為網(wǎng)絡(luò)通信提供了一套豐富的方法和屬性。Socket
類允許您使用
ProtocolType
枚舉中所列出的任何一種協(xié)議執(zhí)行異步和同步數(shù)據(jù)傳輸。什么是SOAP,有哪些應(yīng)用。SOAP(SimpleObjectAccessProtocol
)簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議是在分散或分布式的環(huán)境中交換信息并執(zhí)行遠(yuǎn)程過(guò)程調(diào)用的協(xié)議,是一個(gè)基于XML的協(xié)議。使用SOAP,不用考慮任何特定的傳輸協(xié)議(最常用的還是HTTP協(xié)議),可以允許任何類型的對(duì)象或代碼,在任何平臺(tái)上,以任何一直語(yǔ)言相互通信。這種相互通信采用的是XML格式的消息。SOAP
是一種輕量級(jí)協(xié)議,用于在分散型、分布式環(huán)境中交換結(jié)構(gòu)化信息。
SOAP
利用
XML
技術(shù)定義一種可擴(kuò)展的消息處理框架,它提供了一種可通過(guò)多種底層協(xié)議進(jìn)行交換的消息結(jié)構(gòu)。
這種框架的設(shè)計(jì)思想是要獨(dú)立于任何一種特定的編程模型和其他特定實(shí)現(xiàn)的語(yǔ)義。如何理解.Net中的垃圾回收機(jī)制。垃圾回收器每次進(jìn)行垃圾回收時(shí),對(duì)堆上的對(duì)象進(jìn)行檢查,把沒(méi)有被任何變量引用的對(duì)象銷(xiāo)毀。但并不是檢查堆上的每個(gè)對(duì)象,而是將對(duì)象進(jìn)行分類,將所有對(duì)象分類三代(generation)。生命周期越短(新創(chuàng)建的對(duì)象)代數(shù)越小,反之越大。在堆空間不夠用時(shí),垃圾回收器回收垃圾,檢查第0代對(duì)象,如果發(fā)現(xiàn)沒(méi)有被引用的對(duì)象,則標(biāo)記這些為“垃圾”,并銷(xiāo)毀。而幸存的部分的第0代對(duì)象將升級(jí)為第1代對(duì)象,某些標(biāo)記為“垃圾”的對(duì)象也會(huì)幸存而升級(jí)。這時(shí)如果堆空間仍然不夠用(如創(chuàng)建比較大的新對(duì)象),垃圾收集器將會(huì)檢查第1代對(duì)象,將沒(méi)有引用的對(duì)象進(jìn)行銷(xiāo)毀。幸存部分升級(jí)為第2代對(duì)象,當(dāng)內(nèi)存堆空間仍然不夠用時(shí),檢查第2代對(duì)象,不過(guò)第2代對(duì)象檢查后仍然是第2代對(duì)象,不會(huì)繼續(xù)升級(jí)。
如果發(fā)現(xiàn)內(nèi)存不夠,則垃圾回收器,將全部對(duì)象作為無(wú)效對(duì)象(被回收對(duì)象),然后先將全局變量,static,處于活動(dòng)中的局部變量,以及當(dāng)前CG指針指向的對(duì)象放入一個(gè)表中。然后會(huì)搜索新列表中的對(duì)象所引用的對(duì)象,加入列表中,其他沒(méi)有被加入列表的對(duì)象都會(huì)被回收。垃圾回收器優(yōu)化引擎根據(jù)正在進(jìn)行的分配情況確定執(zhí)行回收的最佳時(shí)間。當(dāng)垃圾回收器執(zhí)行回收時(shí),它檢查托管堆中不再被應(yīng)用程序使用的對(duì)象并執(zhí)行必要的操作來(lái)回收它們占用的內(nèi)存。
三個(gè)generation,當(dāng)每個(gè)generation內(nèi)存滿了的時(shí)候檢查引用,無(wú)引用就回收內(nèi)存常用的調(diào)用webservice方法有哪些?1.使用WSDL.exe命令行工具。2.使用VS.NET中的AddWebReference菜單選項(xiàng)什么是XML?列舉一下你所了解的XML技術(shù)及其應(yīng)用
XML即可擴(kuò)展標(biāo)記語(yǔ)言。eXtensibleMarkupLanguage.標(biāo)記是指計(jì)算機(jī)所能理解的信息符號(hào),通過(guò)此種標(biāo)記,計(jì)算機(jī)之間可以處理包含各種信息的文章等。如何定義這些標(biāo)記,即可以選擇國(guó)際通用的標(biāo)記語(yǔ)言,比如HTML,也可以使用象XML這樣由相關(guān)人士自由決定的標(biāo)記語(yǔ)言,這就是語(yǔ)言的可擴(kuò)展性。XML是從SGML中簡(jiǎn)化修改出來(lái)的。它主要用到的有XML、XSL和XPath等。
xml可以用來(lái)做網(wǎng)頁(yè)(xslt);xml可以當(dāng)作數(shù)據(jù)庫(kù);xml可以用來(lái)保存對(duì)象的系列化;xml用于配置;用于保存靜態(tài)數(shù)據(jù)類型。接觸XML最多的是webServices和configXML
與
HTML
的主要區(qū)別1.XML是區(qū)分大小寫(xiě)字母的,HTML不區(qū)分。2.XML中,絕對(duì)不能省略掉結(jié)束標(biāo)記。在HTML中,如果上下文清楚地顯示出段落或者列表鍵在何處結(jié)尾,那么你可以省略</p>或者</li>之類的結(jié)束
標(biāo)記。3.
在XML中,擁有單個(gè)標(biāo)記而沒(méi)有匹配的結(jié)束標(biāo)記的元素必須用一個(gè)
/
字符作為結(jié)尾。這樣分析器就知道不用
查找結(jié)束標(biāo)記了。4.
在XML中,屬性值必須在引號(hào)中。在HTML中,引號(hào)是可用可不用的。5.
在XML中,所有的屬性都必須帶有相應(yīng)的值。在HTML中,可以擁有不帶值的屬性名。C#中property與attribute的區(qū)別,他們各有什么用處,這種機(jī)制的好處在哪里?
property和attribute漢語(yǔ)都稱之為屬性。
property一個(gè)是屬性,用于存取類的字段,類向外提供的數(shù)據(jù)區(qū)域,
attribute一個(gè)是特性,用來(lái)標(biāo)識(shí)類,方法等的附加性質(zhì),
描述對(duì)象在編譯時(shí)或運(yùn)行時(shí)屬性的.C#可否對(duì)內(nèi)存進(jìn)行直接的操作?
這個(gè)問(wèn)題比較難回答,也是個(gè)很大的問(wèn)題。但是可以這樣問(wèn)答。C#是可以對(duì)內(nèi)存進(jìn)行直接操作的,雖然很少用到指針,但是C#是可以使用指針的,在用的時(shí)候需要在前邊加unsafe,,在.net中使用了垃圾回收機(jī)制(GC)功能,它替代了程序員,不過(guò)在C#中不可以直接使用finalize方法,而是在析構(gòu)函數(shù)中調(diào)用基類的finalize()方法。用最有效的方法算出2的3次方8等于幾?2<<3.維護(hù)數(shù)據(jù)庫(kù)的完整性、一致性、你喜歡用觸發(fā)器還是自寫(xiě)業(yè)務(wù)邏輯?為什么觸發(fā)器,性能好,事務(wù)性ADO.NET相對(duì)于ADO等主要有什么改進(jìn)?
簡(jiǎn)單的說(shuō),ADO.NET新增dataset等,不需要隨時(shí)保持連接,性能提高.1:ADO.Net不依賴于oledb提供程序,而是使用.net托管提供的程序,2:不使用com3:不在支持動(dòng)態(tài)游標(biāo)和服務(wù)器端游4:,可以斷開(kāi)connection而保留當(dāng)前數(shù)據(jù)集可用5:強(qiáng)類型轉(zhuǎn)換6:xml支持
您可以通過(guò)將
ADO.NET
的各項(xiàng)功能與
ActiveX
數(shù)據(jù)對(duì)象
(ADO)
的特定功能進(jìn)行比較來(lái)理解
ADO.NET
的功能。
1、數(shù)據(jù)的內(nèi)存中表示形式
在
ADO
中,數(shù)據(jù)的內(nèi)存中表示形式為記錄集。在
ADO.NET
中,它為數(shù)據(jù)集。它們之間有重要的差異。
2、表的個(gè)數(shù)
記錄集看起來(lái)像單個(gè)表。如果記錄集將包含來(lái)自多個(gè)數(shù)據(jù)庫(kù)表的數(shù)據(jù),則它必須使用
JOIN
查詢,將來(lái)自各個(gè)數(shù)據(jù)庫(kù)表的數(shù)據(jù)組合到單個(gè)結(jié)果表中。
相反,數(shù)據(jù)集是一個(gè)或多個(gè)表的集合。數(shù)據(jù)集內(nèi)的表稱為數(shù)據(jù)表;明確地說(shuō),它們是
DataTable
對(duì)象。如果數(shù)據(jù)集包含來(lái)自多個(gè)數(shù)據(jù)庫(kù)表的數(shù)據(jù),它通常將包含多個(gè)
DataTable
對(duì)象。即,每個(gè)
DataTable
對(duì)象通常對(duì)應(yīng)于單個(gè)數(shù)據(jù)庫(kù)表或視圖。這樣,數(shù)據(jù)集可以模仿基礎(chǔ)數(shù)據(jù)庫(kù)的結(jié)構(gòu)。
數(shù)據(jù)集通常還包含關(guān)系。數(shù)據(jù)集內(nèi)的關(guān)系類似于數(shù)據(jù)庫(kù)中的外鍵關(guān)系,即它使多個(gè)表中的行彼此關(guān)聯(lián)。例如,如果數(shù)據(jù)集包含一個(gè)有關(guān)投資者的表和另一個(gè)有關(guān)每個(gè)投資者的股票購(gòu)買(mǎi)情況的表,則數(shù)據(jù)集可能還包含一個(gè)關(guān)系來(lái)連接投資者表的各個(gè)行和購(gòu)買(mǎi)表的對(duì)應(yīng)行。
由于數(shù)據(jù)集可以保存多個(gè)獨(dú)立的表并維護(hù)有關(guān)表之間關(guān)系的信息,因此它可以保存比記錄集豐富得多的數(shù)據(jù)結(jié)構(gòu),包括自關(guān)聯(lián)的表和具有多對(duì)多關(guān)系的表。
3、數(shù)據(jù)導(dǎo)航和游標(biāo)
在
ADO
中,您使用
ADOMoveNext
方法順序掃描記錄集的行。在
ADO.NET
中,行表示為集合,因此您可以像依次通過(guò)任何集合那樣依次通過(guò)表,或通過(guò)序號(hào)索引或主鍵索引訪問(wèn)特定行。DataRelation
對(duì)象維護(hù)有關(guān)主記錄和詳細(xì)資料記錄的信息,并提供方法使您可以獲取與正在操作的記錄相關(guān)的記錄。例如,從
Investor
表的"NateSun"的行開(kāi)始,可以定位到
Purchase
表中描述其購(gòu)買(mǎi)情況的那組行。
"游標(biāo)"是數(shù)據(jù)庫(kù)元素,它控制記錄導(dǎo)航、更新數(shù)據(jù)的能力和其他用戶對(duì)數(shù)據(jù)庫(kù)所做更改的可見(jiàn)性。ADO.NET
不具有固有的游標(biāo)對(duì)象,而是包含提供傳統(tǒng)游標(biāo)功能的數(shù)據(jù)類。例如,在
ADO.NETDataReader
對(duì)象中提供只進(jìn)、只讀游標(biāo)的功能。有關(guān)游標(biāo)功能的更多信息,請(qǐng)參見(jiàn)數(shù)據(jù)訪問(wèn)技術(shù)。
4、將打開(kāi)連接的時(shí)間降至最低
在
ADO.NET
中,打開(kāi)連接的時(shí)間僅足夠執(zhí)行數(shù)據(jù)庫(kù)操作,例如"選擇"(Select)
或"更新"(Update)。您可以將行讀入數(shù)據(jù)集中,然后在不保持與數(shù)據(jù)源的連接的情況下使用它們。
在
ADO
中,記錄集可以提供不連接的訪問(wèn),但
ADO
主要是為連接的訪問(wèn)設(shè)計(jì)的。
ADO
和
ADO.NET
中的不連接處理之間存在一個(gè)顯著差異。在
ADO
中,通過(guò)調(diào)用
OLEDB
提供程序來(lái)與數(shù)據(jù)庫(kù)通信。但在
ADO.NET
中,您通過(guò)數(shù)據(jù)適配器(OleDbDataAdapter、SqlDataAdapter、OdbcDataAdapter
或
OracleDataAdapter
對(duì)象)與數(shù)據(jù)庫(kù)通信,這將調(diào)用
OLEDB
提供程序或基礎(chǔ)數(shù)據(jù)源提供的
API。ADO
和
ADO.NET
之間的主要區(qū)別在于:
在
ADO.NET
中,數(shù)據(jù)適配器允許您控制將對(duì)數(shù)據(jù)集所做的更改傳輸?shù)綌?shù)據(jù)庫(kù)的方式,方法是實(shí)現(xiàn)性能優(yōu)化、執(zhí)行數(shù)據(jù)驗(yàn)證檢查或添加其他任何額外處理。
注意:數(shù)據(jù)適配器、數(shù)據(jù)連接、數(shù)據(jù)命令和數(shù)據(jù)讀取器是組成
.NETFramework
數(shù)據(jù)提供程序的組件。Microsoft
和第三方供應(yīng)商可能會(huì)提供其它提供程序,這些提供程序也可集成到
VisualStudio
中。有關(guān)不同
.NET
數(shù)據(jù)提供程序的信息,請(qǐng)參見(jiàn)
.NET
數(shù)據(jù)提供程序。
5、在應(yīng)用程序間共享數(shù)據(jù)
在應(yīng)用程序間傳輸
ADO.NET
數(shù)據(jù)集比傳輸
ADO
不連接的記錄集要容易得多。若要將
ADO
不連接的記錄集從一個(gè)組件傳輸?shù)搅硪粋€(gè)組件,請(qǐng)使用
COM
封送。若要在
ADO.NET
中傳輸數(shù)據(jù),請(qǐng)使用數(shù)據(jù)集,它可以傳輸
XML
流。
相對(duì)于
COM
封送,XML
文件的傳輸提供以下便利之處:
更豐富的數(shù)據(jù)類型
COM
封送提供一組有限的數(shù)據(jù)類型(由
COM
標(biāo)準(zhǔn)定義的那些類型)。由于
ADO.NET
中的數(shù)據(jù)集傳輸基于
XML
格式,所以對(duì)數(shù)據(jù)類型沒(méi)有限制。因此,共享數(shù)據(jù)集的組件可以使用這些組件一般會(huì)使用的任何豐富的數(shù)據(jù)類型集。
6、性能
傳輸大型
ADO
記錄集或大型
ADO.NET
數(shù)據(jù)集會(huì)使用網(wǎng)絡(luò)資源;隨著數(shù)據(jù)量的增長(zhǎng),施加于網(wǎng)絡(luò)的壓力也在增加。ADO
和
ADO.NET
都使您可以最大限度地降低所傳輸?shù)臄?shù)據(jù)。但
ADO.NET
還提供另一個(gè)性能優(yōu)勢(shì):ADO.NET
不需要數(shù)據(jù)類型轉(zhuǎn)換。而需要
COM
封送來(lái)在組件間傳輸記錄集的
ADO,則需要將
ADO
數(shù)據(jù)類型轉(zhuǎn)換為
COM
數(shù)據(jù)類型。
7、穿透防火墻
防火墻可以影響試圖傳輸不連接的
ADO
記錄集的兩個(gè)組件。請(qǐng)記住,防火墻通常配置為允許
HTML
文本通過(guò),但防止系統(tǒng)級(jí)請(qǐng)求(如
COM
封送)通過(guò)。
因?yàn)榻M件使用
XML
交換
ADO.NET
數(shù)據(jù)庫(kù),所以防火墻可以允許數(shù)據(jù)集通過(guò)。ASP.Net與ASP相比,主要有哪些進(jìn)步?asp解釋型,aspx編譯型,性能提高,有利于保護(hù)源碼ASP的缺點(diǎn):
VBScript和JavaScript是在ASP中僅可使用的兩種腳本語(yǔ)言。它們是基本的非類型化語(yǔ)言。在ASP中不能使用強(qiáng)類型語(yǔ)言.
ASP頁(yè)面需要解釋,使得它執(zhí)行速度較慢。
ASP頁(yè)面非常凌亂。
在使用ASP創(chuàng)建WEB應(yīng)用程序時(shí),程序員和設(shè)計(jì)人員必須在同一文件上一起工作。
在ASP中,必須通過(guò)編寫(xiě)代碼來(lái)提供所需的任何功能。
在ASP中沒(méi)有對(duì)代碼給予太多的關(guān)注。
在ASP中沒(méi)有調(diào)試機(jī)制。
在ASP中。必須停止WEB服務(wù)器才能安裝DLL的新版本,并且在應(yīng)用程序中使用DLL的新版本之前,必須先在注冊(cè)表中注冊(cè)它,而且,DLL注冊(cè)過(guò)程非常復(fù)雜。ASP.NET的優(yōu)點(diǎn):
ASP.Net中支持強(qiáng)類型語(yǔ)言.
ASP.Net頁(yè)將被編譯而不是解釋,這樣它們的執(zhí)行速度就比ASP頁(yè)快。
ASP.Net提供聲明性服務(wù)器控件。
ASP.Net通過(guò)繼承機(jī)制來(lái)支持代碼的重用。
ASP.Net具有Trace的內(nèi)置方法,可以幫助對(duì)頁(yè)面進(jìn)行調(diào)試。
在ASP.Net中,置于應(yīng)用程序的BIN目錄中的任何組件將自動(dòng)對(duì)應(yīng)用程序可用.你對(duì)XML,HTTP、WEBSERVICE了解嗎?簡(jiǎn)單描述其特點(diǎn)、作用xmlhttp可以主動(dòng)獲取遠(yuǎn)端web代碼,類似HttpWebRequest存儲(chǔ)過(guò)程和函數(shù)的區(qū)別存儲(chǔ)過(guò)程是編譯好的存儲(chǔ)在數(shù)據(jù)庫(kù)的操作,函數(shù)不用說(shuō)了。Session,ViewState,Application,cookie的區(qū)別?Session:用于保持狀態(tài)的基于
Web
服務(wù)器的方法。Session
允許通過(guò)將對(duì)象存儲(chǔ)在Web
服務(wù)器的內(nèi)存中在整個(gè)用戶會(huì)話過(guò)程中保持任何對(duì)象。主要用于保持代碼隱藏類中對(duì)象的狀態(tài)。為每個(gè)用戶創(chuàng)建的,用于存儲(chǔ)單個(gè)用戶,因?yàn)樗窍鄬?duì)每個(gè)用戶的.所以可能來(lái)取得在線人數(shù)等。ViewState:主要用于保持
Web
頁(yè)上控件的狀態(tài)。當(dāng)
Web
頁(yè)上的控件被綁定到代碼隱藏類中的對(duì)象。Application用于存儲(chǔ)所有用戶都可視的信息.所以它存儲(chǔ)的是要讓所有用戶共享的一些信息.如總訪問(wèn)數(shù)等Cache,頁(yè)面緩存。Cookie:通常我們都把它放在客戶端,也可以存儲(chǔ)在服務(wù)器端。主要用它存儲(chǔ)用戶的個(gè)性設(shè)制,和登陸信息。
請(qǐng)說(shuō)明在.Net中常用的幾種頁(yè)面間傳遞參數(shù)的方法,并說(shuō)出他們的優(yōu)缺點(diǎn)。1、queryString
url參數(shù)簡(jiǎn)單,顯示于地址欄,長(zhǎng)度有限優(yōu)點(diǎn):簡(jiǎn)單易用;資源占用比較少。缺點(diǎn):傳遞數(shù)據(jù)大小有限制,只能傳遞基本類型的數(shù)據(jù),安全性差2、session(viewstate)優(yōu)點(diǎn):簡(jiǎn)單,靈活性強(qiáng),能傳遞復(fù)雜的對(duì)象缺點(diǎn):但易丟失,資源消耗大3、cookie優(yōu)點(diǎn):簡(jiǎn)單,缺點(diǎn):但可能不支持,可能被偽造,大小有限制不能超過(guò)4KB
不恩能夠存儲(chǔ)復(fù)雜對(duì)象4、this.Server.Transfer,優(yōu)點(diǎn):URL地址不變,安全性高,靈活性強(qiáng),能傳遞復(fù)雜的對(duì)象缺點(diǎn):資源消耗大5、hiddencontrol/viewstate
簡(jiǎn)單,可能被偽造6、staticmember。
7、cache
8、application優(yōu)點(diǎn):全局缺點(diǎn):資源消耗大9、DataBase
數(shù)據(jù)庫(kù)穩(wěn)定,安全,但性能相對(duì)弱10、xmlorother
Files
11、XMLHTTPorHiddeniFrame/frame
12、Context.user.identity
我正在做一個(gè)通用提示頁(yè)面,所有頁(yè)面出現(xiàn)問(wèn)題都要,傳遞幾個(gè)變量字符串到同一個(gè)頁(yè)面
hitMsg。aspx變量字符串包括提示語(yǔ)言,即將跳轉(zhuǎn)的頁(yè)面,跳轉(zhuǎn)時(shí)間。在上面的種方案中哪個(gè)更好些?
(1)queryString的毛病是無(wú)法傳遞很長(zhǎng)字符串,比如系統(tǒng)錯(cuò)誤信息往往就一整個(gè)屏幕。
(2)session的毛病是不能過(guò)多使用,容易丟失。
(3)cookie的毛病是依賴客戶端設(shè)置,不可靠。
(4)server.transfer的毛病是接收頁(yè)面要為發(fā)送頁(yè)面準(zhǔn)備好,只能定制專門(mén)一個(gè)頁(yè)面接受定制好的頁(yè)面。不能是一個(gè)頁(yè)面接受任何頁(yè)面。
(5)hiddencontrol/viewstate只能傳遞本頁(yè)。除非特殊制作。
(6)staticmember。無(wú)法保證線程安全,可能會(huì)此處栽瓜他處得豆。
(7)cache不適合使用一次就扔的變量。
(8)application全局的,開(kāi)銷(xiāo)大。
(9)DataBase全局固化的,開(kāi)銷(xiāo)更大,除非做日志跟蹤。
(10)xmlorotheFiles全局固化的,開(kāi)銷(xiāo)大,除非做日志跟蹤。
(11)XMLHTTPorHiddeniFrame/frame,做這個(gè)過(guò)于煩瑣。
(12)Context這個(gè)占用了用戶id,不適合做這個(gè)。如果在一個(gè)B/S結(jié)構(gòu)的系統(tǒng)中需要傳遞變量值,但是又不能使用Session、Cookie、Application,您有幾種方法進(jìn)行處理?inputtype="hidden"
簡(jiǎn)單,可能被偽造url參數(shù)簡(jiǎn)單,顯示于地址欄,長(zhǎng)度有限數(shù)據(jù)庫(kù)穩(wěn)定,安全,但性能相對(duì)弱this.Server.Transfer,在新頁(yè)面獲得值的代碼如下:if(Page.PreviousPage!=null){
TextBoxst=
(TextBox)Page.PreviousPage.FindControl("TextBox1");
if(st!=null)
{
Label1.Text=SourceTextBox.Text;
}}ASP.NET頁(yè)面跳轉(zhuǎn)的幾種方法超鏈接跳轉(zhuǎn)<a>標(biāo)簽1.<ahref=”test.aspx”></a>2.這是最常見(jiàn)的一種轉(zhuǎn)向方法;HyperLink控件1.A
服務(wù)器端控件屬性NavigateUrl指定要跳轉(zhuǎn)到的Url地址2.NavigateUrl是可以在服務(wù)器端使用代碼修改,這個(gè)區(qū)別于<a>3.由于HyperLink本身沒(méi)有事件所以要在服務(wù)器端其它事件中設(shè)置NavigateUrl4.代碼示例<Asp:HyperLinkid=”hyperlink”
runat=”server”
NavigatoeUrl=”test.aspx”>ok</Asp:HyperLink>Response.Redirect()方法1.過(guò)程:發(fā)送一個(gè)Http響應(yīng)到客戶端,通知客戶端跳轉(zhuǎn)到一個(gè)新的頁(yè)面,然后客戶端再發(fā)送跳轉(zhuǎn)請(qǐng)求到服務(wù)器端。2.頁(yè)面跳轉(zhuǎn)之后內(nèi)部控件保存的所有信息丟失,當(dāng)A跳轉(zhuǎn)到B,B頁(yè)面將不能訪問(wèn)A頁(yè)面提交的數(shù)據(jù)信息。3.使用這個(gè)方法使用這個(gè)方法跳轉(zhuǎn)后瀏覽器地址欄的Url信息改變4.可以使用SessionCookiesApplication等對(duì)象進(jìn)行頁(yè)面間的數(shù)據(jù)傳遞5.重定向操作發(fā)生在客戶端,總共涉及到兩次與Web服務(wù)器的通信:一次是對(duì)原始頁(yè)面的請(qǐng)求,另一次是重定向新頁(yè)面的請(qǐng)求
Server.Transfer()方法1.實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)的同時(shí)將頁(yè)面的控制權(quán)進(jìn)行移交2.頁(yè)面跳轉(zhuǎn)過(guò)程中RequestSession等保存的信息不變,跳轉(zhuǎn)之后可以使用上一個(gè)頁(yè)面提交的數(shù)據(jù)3.跳轉(zhuǎn)之后瀏覽器地址欄的Url不變4.這種方法的重定向請(qǐng)求是在服務(wù)器端的進(jìn)行的,瀏覽器不知道頁(yè)面已經(jīng)發(fā)生了一次跳轉(zhuǎn)Server.Execute()方法1.該方法允許當(dāng)前頁(yè)面執(zhí)行同一個(gè)Web服務(wù)器上的另一個(gè)頁(yè)面2.頁(yè)面執(zhí)行完畢之后重新回到原始頁(yè)面發(fā)出Server.Execute()的位置。3.這種方式類似針對(duì)頁(yè)面的一次函數(shù)調(diào)用被請(qǐng)求的頁(yè)面可以使用原始頁(yè)面的表單數(shù)據(jù)和查詢字符串集合4.被調(diào)用頁(yè)面的Page指令的EnableViewStateMac屬性設(shè)置為False通過(guò)超鏈接怎樣傳遞中文參數(shù)?URLEncodeURLDecode請(qǐng)說(shuō)出強(qiáng)名的含義對(duì)程序集,進(jìn)行公鑰/私鑰對(duì)簽名,稱為強(qiáng)名。用名稱,版本,文化,公鑰唯一確定程序集具有自己的key,可以在GAC為公用請(qǐng)列出c#中幾種循環(huán)的方法,并指出他們的不同F(xiàn)or:使用于確定次數(shù)的循環(huán)Foreach:使用于遍歷的元素只讀While:次數(shù)不確定條件隨機(jī)變化Do…while:次數(shù)不確定條件隨機(jī)變化,但至少要保證能被執(zhí)行一次請(qǐng)指出.Net中所有類型的基類ObjectC#中有沒(méi)有運(yùn)算符重載?能否使用指針?
有,重載操作符意味著使該操作符具有不同的行為;使用操作符可以使方程式簡(jiǎn)單易懂;重載運(yùn)算符使用operator關(guān)鍵字來(lái)創(chuàng)建一個(gè)運(yùn)算符方法,只能在類或結(jié)構(gòu)中使用
Operator
例:下面的代碼示例使用
Operator
語(yǔ)句定義一個(gè)結(jié)構(gòu)的大綱,該結(jié)構(gòu)包括
And、Or運(yùn)算符的運(yùn)算符過(guò)程。And
和
Or
每個(gè)都采用兩個(gè)類型為
abc
的操作數(shù),并返回類型
abc。這些定義允許調(diào)用代碼通過(guò)
abc
類型的操作數(shù)來(lái)使用
And、Or。PublicStructureabc
PublicSharedOperatorAnd(ByValxAsabc,ByValyAsabc)Asabc
DimrAsNewabc
'InsertcodetocalculateAndofxandy.
Returnr
EndOperator
PublicSharedOperatorOr(ByValxAsabc,ByValyAsabc)Asabc
DimrAsNewabc
'InsertcodetocalculateOrofxandy.
Returnr
EndOperatorEndStructure
能使用指針,
在
C#
中很少需要使用指針,但仍有一些需要使用的情況。例如,在下列情況中使用允許采用指針的不安全上下文是正確的:
處理磁盤(pán)上的現(xiàn)有結(jié)構(gòu)
涉及內(nèi)部包含指針的結(jié)構(gòu)的高級(jí)
COM
或平臺(tái)調(diào)用方案
性能關(guān)鍵代碼
不鼓勵(lì)在其他情況下使用不安全上下文。具體地說(shuō),不應(yīng)該使用不安全上下文嘗試在
C#
中編寫(xiě)
C
代碼。C#可否對(duì)內(nèi)存進(jìn)行直接的操作?(這可是個(gè)難點(diǎn)哦?要注意!)
C#在unsafe
模式下可以使用指針對(duì)內(nèi)存進(jìn)行操作,
但在托管模式下不可以使用指針,C#NET默認(rèn)不運(yùn)行帶指針的,需要設(shè)置下,選擇項(xiàng)目右鍵->屬性->選擇生成->“允許不安全代碼”打勾->保存using
System;public
class
Program{
public
static
void
Main()
{
int
n=123;
unsafe
{
int*p=&n;
Console.WriteLine("{0:X}",n);
Console.WriteLine("{0:X}",*p);
Console.WriteLine("{0}",p->ToString());
}
}}結(jié)果:7B7B123請(qǐng)按任意鍵繼續(xù)...用VisualC++6.0編寫(xiě)的代碼(unmanagedcode),如何在CLR下和其他dotnetcomponent結(jié)合?
net
與
Com
互操作
在.net中可以通過(guò)添加引用的方式將COM
加載在CLR下,將原有的COM中的類型相應(yīng)變化為.Net
下可識(shí)別的類型私有程序集與共享程序集有什么區(qū)別?
一個(gè)私有程序集通常為單個(gè)應(yīng)用程序所使用,并且存儲(chǔ)于這個(gè)應(yīng)用程序所在的目錄之中,或此目錄下面的一個(gè)子目錄中。共享程序集通常存儲(chǔ)在全局程序集緩存(GlobalAssemblyCache)之中,這是一個(gè)由.NET運(yùn)行時(shí)所維護(hù)的程序集倉(cāng)庫(kù)。共享程序集通常是對(duì)許多應(yīng)用程序都有用的代碼庫(kù),比如.NETFramework類。私有程序集:
默認(rèn)情況下,C#
程序編譯為私有程序集
需要放在應(yīng)用程序所在的文件夾中
程序集的名稱在應(yīng)用程序中應(yīng)當(dāng)是唯一的共享程序集:
可以被不同的應(yīng)用程序共享
在所有使用程序集的應(yīng)用程序中,程序集名稱應(yīng)當(dāng)是唯一的
放在全局程序集緩存中什么是GAC?它解決了什么問(wèn)題?
GloalAssemblyCache,全局應(yīng)用程序集緩存。它解決了幾個(gè)程序共享某一個(gè)程序集的問(wèn)題。不必再將那個(gè)被共享的程序集拷貝到應(yīng)用程序目錄了,其實(shí)這道理很簡(jiǎn)單,.net應(yīng)用程序在加載的時(shí)候,會(huì)首先查看全局應(yīng)用程序集緩存,如果有就可以直接使用,沒(méi)有再到應(yīng)用程序目錄進(jìn)行查找。請(qǐng)指出GAC的含義
全局程序集緩存(GlobalAssemblyCache)可全局使用的程序集的緩存。大多數(shù)共享程序集都安裝在這個(gè)緩存中,其中也安裝了一些私有程序集。存放共享程序的文件夾,可被任何項(xiàng)目使用在全局程序集緩存中部署的應(yīng)用程序必須具有強(qiáng)名稱。.Net提供的命令行工具gacutil.exe用于支持這一功能。gacutil.exe可以將具有強(qiáng)名稱的程序集添至全局程序集緩存。怎樣理解靜態(tài)變量?所有實(shí)例公用一個(gè)的變量向服務(wù)器發(fā)送請(qǐng)求有幾種方式?區(qū)別?getpost
get一般為鏈接方式,post一般為按鈕方式。主要區(qū)別如下:1、get從服務(wù)器上獲取數(shù)據(jù),post向服務(wù)器傳送數(shù)據(jù)2、get把參數(shù)隊(duì)列加到表單Action所指定的URL地址中,值和表單內(nèi)的各個(gè)字段一一對(duì)應(yīng),在URL中可以顯示出來(lái)。post把表單中的各個(gè)字段及其內(nèi)容放到HTMLHeader里,一起傳送到Action所指定的URL地址中,不會(huì)在URL中可以顯示出來(lái)3、對(duì)于get,服務(wù)器端用Request.QueryString獲取變量提交的值,對(duì)于post服務(wù)器端用Request.Form獲取提交的數(shù)據(jù)。4、因受到URL長(zhǎng)度的限制,get傳輸?shù)臄?shù)據(jù)量少,不能大于2K,post傳輸?shù)臄?shù)據(jù)量較大,一般默認(rèn)沒(méi)限制。理論上IIS5中為100K,最大可以達(dá)到2M5、get安全性低,post安全性高軟件開(kāi)發(fā)過(guò)程一般有幾個(gè)階段?每個(gè)階段的作用?需求分析,架構(gòu)設(shè)計(jì),代碼編寫(xiě),QA,部署需求分析,概要設(shè)計(jì),詳細(xì)設(shè)計(jì),軟件編碼,軟件測(cè)試可行性分析,需求分析
,實(shí)施和編碼,測(cè)試,維護(hù)分析(需要,概要,詳細(xì)),開(kāi)發(fā)(編程,單元測(cè)試),測(cè)試(集成測(cè)試),維護(hù)。有哪幾種方法可以實(shí)現(xiàn)一個(gè)類存取另外一個(gè)類的成員函數(shù)及屬性,并請(qǐng)舉列來(lái)加以說(shuō)明和分析。?。侯愒诜庋b時(shí)將屬性及函數(shù)設(shè)置成public存:繼承同一個(gè)名稱控件直接,或者反射如果需記錄類的實(shí)例個(gè)數(shù),該如何實(shí)現(xiàn),請(qǐng)寫(xiě)一個(gè)簡(jiǎn)單的類于以證明。conststaticintclassNum=0;classNum++;A類是B類的基類,并且都有自己的構(gòu)造,析構(gòu)函數(shù),請(qǐng)舉例證明B類從實(shí)例化到消亡過(guò)程中構(gòu)造,析構(gòu)函數(shù)的執(zhí)行過(guò)程。構(gòu)造先父后子,析夠反之需要實(shí)現(xiàn)對(duì)一個(gè)字符串的處理,首先將該字符串首尾的空格去掉,如果字符串中間還有連續(xù)空格的話,僅保留一個(gè)空格,即允許字符串中間有多個(gè)空格,但連續(xù)的空格數(shù)不可超過(guò)一個(gè)。stringinputStr="xxxx";inputStr=Regex.Replace(inputStr.Trim(),"*","");new有幾種用法1、new
運(yùn)算符,創(chuàng)建對(duì)象,調(diào)用構(gòu)造函數(shù)2、new
修飾符
覆蓋方法,隱藏父類的成員。publicnewXXXX(){}3、new
約束
用于在泛型聲明中,約束指定泛型類聲明中的任何類型參數(shù)都必須有公共的無(wú)參數(shù)構(gòu)造函數(shù)。當(dāng)泛型類創(chuàng)建類型的新實(shí)例時(shí),將此約束應(yīng)用于類型參數(shù),當(dāng)與其他約束一起使用時(shí),new()
約束必須最后指定。如:publicclassItemFactory<T>whereT:IComparable,new(){}在c#中using和new這兩個(gè)關(guān)鍵字有什么意義,請(qǐng)寫(xiě)出你所知道的意義?using引入名稱空間或者使用非托管資源new新建實(shí)例或者隱藏父類方法下面這段代碼輸出什么?為什么?
inti=5;
intj=5;
if(Object.ReferenceEquals(i,j))
Console.WriteLine("Equal");
else
Console.WriteLine("NotEqual");輸出NotEqual
。不相等,因?yàn)楸容^的是對(duì)象。ReferenceEquals(objecta,objectb),里面的兩個(gè)參數(shù)是object對(duì)象寫(xiě)一個(gè)實(shí)現(xiàn)對(duì)一段字符串翻轉(zhuǎn)的方法,附加一些條件,如其中包括“,”、“?!保瑢?duì)其設(shè)計(jì)測(cè)試用例inputStr=inputStr.ToCharArray().Reverse().ToString();用Singleton如何寫(xiě)設(shè)計(jì)模式static屬性里面new
,構(gòu)造函數(shù)private什么是ApplicationPool?Web應(yīng)用,類似ThreadPool,提高并發(fā)性能鏈表和數(shù)組的區(qū)別,各有什么優(yōu)缺點(diǎn)。一個(gè)可以動(dòng)態(tài)增長(zhǎng),一個(gè)固定(VB中可以Redim),性能數(shù)組教好什么是友元函數(shù)?friendly聲明,可以訪問(wèn)protect級(jí)別方法什么是虛函數(shù)?可以被重寫(xiě)什么是抽象函數(shù)?必須被重寫(xiě)什么是內(nèi)存泄漏,怎樣最簡(jiǎn)單的方法判斷內(nèi)存泄漏
?C++,C中忘了釋放內(nèi)存,內(nèi)存不會(huì)再次分配C#中有很多類被定義為public有什么意義?
public
關(guān)鍵字將公共訪問(wèn)權(quán)限授予一個(gè)或多個(gè)被聲明的編程元素。對(duì)公共元素的可訪問(wèn)性沒(méi)有限制。Internal修飾符有什么含義?
internal
關(guān)鍵字是類型和類型成員的訪問(wèn)修飾符。內(nèi)部成員只有在同一程序集中的文件內(nèi)才是可訪問(wèn)的。內(nèi)部訪問(wèn)通常用于基于組件的開(kāi)發(fā),因?yàn)樗挂唤M組件能夠以私有方式進(jìn)行合作,而不必向應(yīng)用程序代碼的其余部分公開(kāi)。例如,用于生成圖形用戶界面的框架可以提供“控件”類和“窗體”類,這些類通過(guò)使用具有內(nèi)部訪問(wèn)能力的成員進(jìn)行合作。由于這些成員是內(nèi)部的,它們不向正在使用框架的代碼公開(kāi)。在定義具有內(nèi)部訪問(wèn)能力的成員的程序集外部引用該成員是錯(cuò)誤的。簡(jiǎn)述
private、
protected、
public、
internal
修飾符的訪問(wèn)權(quán)限。private:
私有成員,在類的內(nèi)部才可以訪問(wèn)。protected:
保護(hù)成員,該類內(nèi)部和繼承類中可以訪問(wèn)。public:
公共成員,完全公開(kāi),沒(méi)有訪問(wèn)限制。internal:
在同一命名空間內(nèi)可以訪問(wèn)。JAVA的代碼是半編譯半解釋的C#的代碼是否也是這樣
C#源碼經(jīng)過(guò)語(yǔ)言編譯器執(zhí)行第一次編譯,變?yōu)橹虚g語(yǔ)言,然后再由CLR編譯成可執(zhí)行代碼.進(jìn)程和線程的區(qū)別1、單位:進(jìn)程是系統(tǒng)進(jìn)行資源分配和調(diào)度的單位;線程是CPU調(diào)度和分派的單位。2、一個(gè)進(jìn)程可以有多個(gè)線程,這些線程共享這個(gè)進(jìn)程的資源。
進(jìn)程是比線程大的程序運(yùn)行單元,都是由操作系統(tǒng)所體會(huì)的系統(tǒng)運(yùn)行單元,一個(gè)程序中至少要有一個(gè)進(jìn)程,有一個(gè)進(jìn)程中,至少要有一個(gè)線程,線程的劃分尺度要比進(jìn)程要小。3、進(jìn)程擁有獨(dú)立的內(nèi)存單元,線程是共享內(nèi)存,從而極大的提高了程序的運(yùn)行效率同一個(gè)進(jìn)程中的多個(gè)線程可以并發(fā)執(zhí)行。4、邊界:二者都定義了某種邊界,進(jìn)程是應(yīng)用程序與應(yīng)用程序之間的邊界,不同的進(jìn)程之間不能共享代碼和數(shù)據(jù)空間,而線程是代碼執(zhí)行堆棧和執(zhí)行上下文的邊界。成員變量和成員函數(shù)前加static的作用
它們被稱為常成員變量和常成員函數(shù),又稱為類成員變量和類成員函數(shù)。分別用來(lái)反映類的狀態(tài)。比如類成員變量可以用來(lái)統(tǒng)計(jì)類實(shí)例的數(shù)量,類成員函數(shù)負(fù)責(zé)這種統(tǒng)計(jì)的動(dòng)作。malloc和new的區(qū)別
new是C++的關(guān)鍵字。malloc在分配內(nèi)存時(shí)必須按給出的字節(jié)分配,new可以按照對(duì)象的大小自動(dòng)分配,并且能調(diào)用構(gòu)造函數(shù)??梢哉f(shuō)new是對(duì)象的對(duì)象,而malloc不是。本質(zhì)上new分配內(nèi)存時(shí),還會(huì)在實(shí)際內(nèi)存塊的前后加上附加信息,所以new所使用的內(nèi)存大小比malloc多。堆和棧
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 哺乳期乳頭皸裂的健康宣教
- 多導(dǎo)生理記錄儀(8導(dǎo)以上)相關(guān)行業(yè)投資方案范本
- 抵押房產(chǎn)出售合同三篇
- 如何增強(qiáng)大班師生之間的信任計(jì)劃
- 2024-2025學(xué)年第一學(xué)期長(zhǎng)樂(lè)一中階段一考試 英語(yǔ) 答案-A4
- 《原發(fā)性肝癌診療指南(2024年版)》解讀
- 《證券投資相關(guān)》課件
- 2024年吉林省吉林市中考化學(xué)真題含解析
- 調(diào)查報(bào)告寫(xiě)作范文
- 轉(zhuǎn)任工作整改報(bào)告范文
- 心理健康與大學(xué)生活學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 國(guó)開(kāi)汽車(chē)學(xué)院《項(xiàng)目管理》形考作業(yè)1-4答案
- 借款協(xié)議(父母借款給子女買(mǎi)房協(xié)議)(二篇)
- 外研版英語(yǔ)2024七年級(jí)上冊(cè)全冊(cè)單元知識(shí)清單(記憶版)
- 國(guó)家開(kāi)放大學(xué)電大本科《工程經(jīng)濟(jì)與管理》2023-2024期末試題及答案(試卷代號(hào):1141)
- 歌唱語(yǔ)音智慧樹(shù)知到期末考試答案章節(jié)答案2024年齊魯師范學(xué)院
- 國(guó)開(kāi)(甘肅)2024年春《地域文化(專)》形考任務(wù)1-4終考答案
- MOOC 美在民間-南京農(nóng)業(yè)大學(xué) 中國(guó)大學(xué)慕課答案
- 《中國(guó)心力衰竭診斷和治療指南2024》解讀
- 中國(guó)馬克思主義與當(dāng)代課后習(xí)題答案
- 化工原理課程設(shè)計(jì)苯—甲苯精餾塔設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論