合肥工業(yè)大學(xué)版net題庫.doc
《合肥工業(yè)大學(xué)版net題庫.doc》由會員分享,可在線閱讀,更多相關(guān)《合肥工業(yè)大學(xué)版net題庫.doc(21頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
一、填空 1、以公共運(yùn)行時(shí)(CLR)為目標(biāo)的代碼稱為 托管代碼 2、CLR 中的自動(dòng)內(nèi)存管理功能技術(shù)稱為 垃圾回收 3、CLR通過 通用類型系統(tǒng)(CTS) ,實(shí)現(xiàn)嚴(yán)格的類型和代碼驗(yàn)證, 4、可移植可執(zhí)行文件(PE)包含 元數(shù)據(jù) 和以Microsoft中介語言(MSIL)形式存在的代碼 5、程序集 構(gòu)成了部署,版本控制,重復(fù)使用,激活范圍控制和安全權(quán)限的基本單元 6、類型System.Collection.Anaylist的命名空間為System.Collections 7、CLR中 應(yīng)用程序域 可提供與獨(dú)立進(jìn)程間等隔離級別, 8、bool 類型的別名是 System.Boolean 9、語句 typeof(bool)的運(yùn)行結(jié)果是:System.Boolean 10、NET Framwork中的所有類均從Object 派生 11、所有值類型均隱式派生自 System.ValueType 12、C是可為null 的 int型變量,語句int d=c ?? -1,的含義是:c為空d等于-1否則d等于c 13、在不安全的上下文中,類型可以是指針類型,值類型和引用類型。 14、String 對象是不可變的,如果要修改字符串而不創(chuàng)建新的對象,則可以使用System.Text.StringBuilder類 15、多態(tài),封裝和繼承是面向?qū)ο缶幊痰娜笾е? 16、聲明抽象類和抽象方法的關(guān)鍵字是 abstract 17、聲明分部類和分部方法的關(guān)鍵字是 partial 18、修飾符internal 限定類型或成員只能被同一程序集中的任何代碼訪問 19、修飾符 protected intemal限定類型或成員可被同一集中的任何代碼或其他程序集中的任何派生類訪問 1、基類中虛方法(virtual)可以被派生類重寫或覆蓋,重寫或覆蓋需使用關(guān)鍵字:override 2、System.Object類是C#所有類的基類或根 3、C#中一個(gè)類可以繼承多個(gè)接口,但只能有一個(gè)基類 4、在C#中數(shù)據(jù)類型有兩類,引用類型和值類型 5、值類型存在堆棧中,引用類型存儲在托管內(nèi)存中的堆(內(nèi)存) 6、值類型轉(zhuǎn)換為object類型或其派生類型,稱為裝箱,反之稱為拆箱 7、在C#中實(shí)現(xiàn)循環(huán)的語句有for do-what while和foreach 8、在C#中實(shí)現(xiàn)異常處理的語句有try catch和finally 9、語句using.System的作用是導(dǎo)入命名空間 10、在C#中有一維,多維和交錯(cuò)數(shù)組,語句“char[][]A1”表示A1是交錯(cuò)數(shù)組 11、屬性提供一種靈活的機(jī)制實(shí)現(xiàn)對類私有字段的讀寫,本質(zhì)上是公共方法,它使用的訪問器有g(shù)et和set,只讀屬性將沒有set訪問器 12、運(yùn)算符is和as與引用類型轉(zhuǎn)換相關(guān),其中運(yùn)算符 is:檢查對象是否與給定的類型兼容 as:用于檢查在兼容的引用類型之間執(zhí)行某些類型的轉(zhuǎn)換 選擇(注意選項(xiàng)不一定和題庫一樣?。?!題號加問號的不太確定) 1. System.String是引用和類型 3.數(shù)組類型為System.Array, A.?dāng)?shù)組作為ref關(guān)鍵字聲明的參數(shù)傳遞時(shí),數(shù)組必須在調(diào)用前在方法外部實(shí)現(xiàn)明確賦值,在方法內(nèi)部對數(shù)組所做的任何參數(shù),包括用new重建數(shù)組,都將反映到原先數(shù)組上(√) B.?dāng)?shù)組作為out關(guān)鍵字聲明的參數(shù)傳遞時(shí),數(shù)組必須在方法外部明確賦值,在方法內(nèi)部對數(shù)組所做的任何修改,也將反映到原先的數(shù)組上()//out傳遞參數(shù)時(shí)不需要事先初始化,但必須在方法中初始化 C.pararns允許指定一個(gè)方法的參數(shù)的數(shù)量是可變化的,在調(diào)用時(shí)給定參數(shù)個(gè)數(shù)(√) D.?dāng)?shù)組作為in關(guān)鍵字聲明的參數(shù)傳遞時(shí),向方法提供位于托管堆的數(shù)組內(nèi)存對象,在方法內(nèi)部使用new重建數(shù)組參數(shù)時(shí),程序?qū)⒎峙湮挥谕泄芏训牧硗庖粋€(gè)位置用于存儲創(chuàng)建的數(shù)組參數(shù)對象,而不是指向原有的托管堆內(nèi)存位置(?)課件太多沒找到 //對于泛型類型參數(shù),in 關(guān)鍵字指定該類型參數(shù)是逆變的。 可以在泛型接口和委托中使用 in 關(guān)鍵字 4、關(guān)于迭代器說法錯(cuò)誤的是( ) A、迭代器是返回相同類型的有序數(shù)值序列的一段代碼(√) B、迭代器可用作方法、運(yùn)算符或 get 訪問器的代碼體。(√) C、迭代器使用yield break語句一次返回每個(gè)元素,用yield return結(jié)束迭代()//反了?。?! D、可以在類中實(shí)現(xiàn)多個(gè)迭代器。每個(gè)迭代器都必須像任何類成員一樣有唯一的名稱,并且可以在 foreach 語句中被客戶端代碼調(diào)用(√) E、迭代器的返回類型必須為IteratorEnumerable,IEnumerator,IEnumerablet(T)或IEnumerator(T)()//IteratorEnumerable應(yīng)該為IEnumerable 5、關(guān)于as運(yùn)算符說法錯(cuò)誤的是( ) A、as運(yùn)算符是一種類型轉(zhuǎn)換符,用來在兩個(gè)引用類型的對象之間進(jìn)行類型轉(zhuǎn)換,如果轉(zhuǎn)換失敗將轉(zhuǎn)換為null(√) B、as運(yùn)算符之后可以是值類型數(shù)據(jù),即該運(yùn)算符支持值類型對象的轉(zhuǎn)換,不會引起編輯錯(cuò)誤()//as運(yùn)算符之后不被不能是值類型數(shù)據(jù)類型,即該運(yùn)算符不支持值類型對象的轉(zhuǎn)換,否則將會引起編輯錯(cuò)誤。 C、as運(yùn)算符支持類型數(shù)據(jù)到object類型的轉(zhuǎn)換,這時(shí)對值類型遍歷進(jìn)行的是一個(gè)裝箱操作錯(cuò)誤(√) D、as運(yùn)算符用于引用類型的轉(zhuǎn)換盒值類型的裝箱,轉(zhuǎn)換失敗時(shí),將轉(zhuǎn)換為null,而不會引發(fā)異常(√) E、as運(yùn)算符不能用于自定義的類型轉(zhuǎn)換,當(dāng)需要進(jìn)行用戶自定義的轉(zhuǎn)換時(shí),應(yīng)使用cast來轉(zhuǎn)換(√) 6、C#中用于聲明匿名類型的關(guān)鍵字是() A、var B、dynamic C、object D、params 7、選出下面程序段中的錯(cuò)誤語句( ) Decimal myMoney = 99.9m; double x = (double)myMoney; A、myMoney = (decimal)x B、myMoney = 300 C、decimal xx = myMoney+x()//錯(cuò)誤 1 運(yùn)算符“+”無法應(yīng)用于“decimal”和“double”類型的操作數(shù) D、decimal xx = myMoney+300 8.選出下面程序段中會引發(fā)異常的語句 Int i=123 A. object o=i B. object o1=(object)i i=456 C. int j=(int)o D. int j=(short)o //選項(xiàng)有點(diǎn)亂 反正是D錯(cuò)了,未處理 System.InvalidCastException Message=指定的轉(zhuǎn)換無效。 9、試選出錯(cuò)誤的語句( ) A、double?d1 = null B、bool flag = null ()// 加問號! C、char letter = ‘a(chǎn)’ D、int?[]arr = new int?[10] ?10.在下列程序段中,絕對不會出現(xiàn)編譯錯(cuò)誤和運(yùn)行異常的語句為 Int?n=null A. int m1=n()//缺少強(qiáng)制轉(zhuǎn)換 B. int m2=(int)n;()//null強(qiáng)制轉(zhuǎn)成int有問題 C. int m3=nValue;(?)//沒看明白,應(yīng)該抄錯(cuò)了 int b=10; D. int?n2=n;(√) ?11、試從下面程序段中選出有語法錯(cuò)誤的語句( ) Bool?b = false A、 object bBoxed = b B、 bool b2=(bool)bBoxed C、 if(b==null){} D、 if(bBoxed==null){} //執(zhí)行過了 都對……應(yīng)該只有D可能有問題 12、關(guān)于結(jié)構(gòu),說法正確的是; A、 結(jié)構(gòu)是輕量級類,故它是引用類型()//值類型 B、 結(jié)構(gòu)中可聲明無參構(gòu)造函數(shù)()//只能聲明有參構(gòu)造函數(shù) C、 結(jié)構(gòu)聲明中允許對結(jié)構(gòu)成員直接初始化實(shí)例字段()//不可以,只能在構(gòu)造函數(shù)中初始化 D、 結(jié)構(gòu)不能繼承和派生,但可以實(shí)現(xiàn)接口(√) E、 必須使用new關(guān)鍵字來創(chuàng)造結(jié)構(gòu)實(shí)例()//可以不使用,但是各字段保持未賦值狀態(tài),對象不可被使用 F、 結(jié)構(gòu)不能用作為NULL類型,不能賦NULL值()//可以~ 13、試從下面程序段中選出違反默認(rèn)約定的語句 enum Days{Sun,Mon,Tue,Wed,Thu,Fir,Sat}; A. int y=(int)Days.Fir B. Days.meetingDay={Days}42()//錯(cuò)了沒有對的理由,枚舉里面找不到42 C. enum Range:long{Max=2147483648L,Min=255L}; D. long x=(long)Range.Max; 14、從下面選項(xiàng)中選擇錯(cuò)誤的( ) A、dymatic類型對象會繞過靜態(tài)類型檢查,編譯時(shí)被假定支持任何操作,改為在運(yùn)行時(shí)解析這些操作(√) B、類型dynamic只在編譯時(shí)存在,運(yùn)行時(shí)不存在(√) C、var本身不是類型,只是告訴編譯器該變量類型需要推斷(√) D、var[]a=new []{1,10,100,1000}()//無法將類型“int[]”隱式轉(zhuǎn)換為“var[]” 15、下面關(guān)于異常處理描述錯(cuò)誤的是( ) A、各種類型的異常最終都是由System.Exception派生而來(√) B、try塊后跟一個(gè)或多個(gè)catch子句,這些子句按特定程度由低到高順序排列。()//由高到低 C、無論是否引發(fā)異常,finally塊始終會執(zhí)行,常用釋放資源(√) D、在可能引發(fā)異常的語句周圍使用try 塊,一旦try塊中發(fā)生異常,控制流將跳轉(zhuǎn)到第一個(gè)關(guān)聯(lián)的異常處理程序,如果給定異常沒有異常處理程序,則程序?qū)⑼V箞?zhí)行,并像是一條錯(cuò)誤信息。(√) E、在catch塊中可使用throw語句再次引發(fā)已由catch語句捕獲的異常,也可引發(fā)新異常。(√) 16、與string empty相等的是( ) A、null B、”” C、’’ D、” “ 17、關(guān)于ref參數(shù)和out參數(shù),說法錯(cuò)誤的是( ) A、ref關(guān)鍵字聲明的參數(shù)傳遞,參數(shù)必須在調(diào)用前在方法外的事先明確賦值(√) B、out關(guān)鍵字聲明參數(shù)傳遞,參數(shù)必須在方法內(nèi)部明確賦值(√) C、方法內(nèi)部對參數(shù)所作的任何修改,都將反映到原先的參數(shù)上(√) D、在方法的聲明中需顯示加上ref和out,能在調(diào)用語句中省略(錯(cuò))//當(dāng)然不可省略 18、下面關(guān)于虛方法說法錯(cuò)誤的是( ) A、虛方法允許您以統(tǒng)一方式處理多組相關(guān)的對象(√) B、virtual關(guān)鍵字用于修飾方法、屬性、索引器或事件聲明,派生類可重寫它們(√) C、virtual修飾符不能與static,abstract,private或override修飾符一起使用(√) D、根據(jù)對象的運(yùn)行時(shí)類型,確定使用虛方法的哪個(gè)版本,實(shí)現(xiàn)靜態(tài)多態(tài)() //確定使用替換方法的哪個(gè)版本(猜的不確定) 19、關(guān)于override和new修飾符,說法錯(cuò)誤的是( ) A、重寫方法與原方法匿名必然相同,簽名含修飾符(√) B、重寫的基類方法或?qū)傩员仨毷莢irtual,abstract,或override的(√) C、不能使用new,static或virtual修飾符來修飾override方法(√) D、除非sealed override修飾來停止虛擬繼承,虛擬成員將永遠(yuǎn)都是虛擬的()//派生類就可以通過使用 override 關(guān)鍵字來重寫事件行為。 //重寫虛屬性的屬性還可以是 sealed 的,這表示它對派生類不再是虛擬的。 20、關(guān)于抽象類和方法,說法錯(cuò)誤的是( ) A、abstract修飾符可用于類,方法,屬性,索引器和事件(√) B、抽象類可以用來創(chuàng)建實(shí)例()//不可以 C、不能用sealed修飾符來修飾抽象類(√) D、抽象方法是隱式的虛方法,只允許在抽象類中使用抽象方法聲明(√) E、聲明時(shí)不能有實(shí)現(xiàn),即抽象方法沒有抽象類版本,而虛方法可有聲明類版本(√) F、從抽象類派生的非抽象類必須實(shí)現(xiàn)集成的所有抽象方法和抽象訪問器(√) 21、下面代碼中執(zhí)行基類構(gòu)造函數(shù)的語句是() Public class BaseClass {public BaseClass(){} Public virtual void GetInfo(){} } Public class DerivedClass:BaseClass { public string name;} A、 public DerivedClass:base() {} //下面的幾個(gè)選項(xiàng)有點(diǎn)亂,反正A是對的 B、public DerivedClass(string name):this() {this name=name} Public override void GetInfo() C、{base(intInfo() D、Test tt:string str=tt output(this)} } Class Test { public static string output(DerivedClass E) { return E name } } ?22、關(guān)于using語句確保資源釋放的語句( ) A、using Project = PC.MyCompany.Project; B、using System.Text; C、using AlicasToMyCompanyProject = NAmeSpacilMyClass D、using SystemTest E、using(Font font1=new Font("Arial",10.0f)){byte charset=fond1.GdiCharset;} //using會自動(dòng)銷毀using后面括號里創(chuàng)建的對象,而不是{}間的對象 //查看using的用法 23、關(guān)于const和readonly說法錯(cuò)誤的是( ) A、只有內(nèi)置類型(System.Object除外)可聲明為const(√) B、C#不支持const方法,屬性或事件(√) C、不允許在常量聲明中使用static修飾符(√) D、引用類型常量的可能值為string和null(√) E、常量和readonly字段一樣,可以在聲明或構(gòu)造函數(shù)中初始化()//const聲明時(shí)同時(shí)初始化,readonly可以聲明時(shí)初始化,還可以在構(gòu)造函數(shù)中初始化 F、const字段是編譯時(shí)常量,readonly字段可用于運(yùn)行時(shí)常量(√) 24、關(guān)于析構(gòu)說法錯(cuò)誤的是( ) A、析構(gòu)函數(shù)用于創(chuàng)建類的實(shí)例()//在銷毀類實(shí)例的時(shí)候,程序?qū)⒆詣?dòng)調(diào)用析構(gòu)函數(shù),釋放當(dāng)前實(shí)例占用的托管內(nèi)存。 B、不能在結(jié)構(gòu)中定義析構(gòu)函數(shù),只能對類使用析構(gòu)函數(shù)(√) C、一個(gè)類只能有一個(gè)析構(gòu)函數(shù)(√) D、無法繼承或重載析構(gòu)函數(shù)()//在父類中定義的析構(gòu)函數(shù),同時(shí)被子類繼承 E、無法調(diào)用析構(gòu)函數(shù),它們是被自動(dòng)調(diào)用的(√) F、析構(gòu)函數(shù)既沒有修飾符也,也沒有參數(shù)(√)//還沒有返回類型 25、關(guān)于構(gòu)造函數(shù)說法錯(cuò)誤的是( ) A、靜態(tài)構(gòu)造函數(shù)用于初始化靜態(tài)數(shù)據(jù),沒有訪問修飾符和參數(shù),自動(dòng)調(diào)用(√) B、默認(rèn)構(gòu)造函數(shù)有參數(shù)()//無參數(shù) C、實(shí)例構(gòu)造函數(shù)用于創(chuàng)建實(shí)例(√) D、私有構(gòu)造函數(shù)常用于阻止類被繼承(√) E、拷貝構(gòu)造函數(shù)用于同類型對象間的復(fù)制(√) 26、關(guān)于靜態(tài)類和方法說法錯(cuò)誤的是( ) A、靜態(tài)類僅包含靜態(tài)成員,是密封的,不能包含實(shí)例構(gòu)造函數(shù),但可實(shí)例化()//靜態(tài)類只能包含靜態(tài)成員,不能使用 new 關(guān)鍵字進(jìn)行實(shí)例化。 在程序加載時(shí),靜態(tài)類的一個(gè)副本將加載到內(nèi)存中,可通過類名稱訪問該類的成員。 類和結(jié)構(gòu)都可以包含靜態(tài)成員 B、類和靜態(tài)類可以有靜態(tài)構(gòu)造函數(shù)(√) C、靜態(tài)成員不能訪問非靜態(tài)成員,除非在方法參數(shù)中顯示傳遞(√) D、無論對一個(gè)類創(chuàng)造多少實(shí)例,它的靜態(tài)成員都只有一個(gè)副本(√) E、靜態(tài)方法可以被重載但不可以被重寫(√) F、不可以使用this來引用靜態(tài)方法或?qū)傩栽L問器(√) 27.關(guān)于屬性的描述 A.接口中的屬性有方法體()//沒有方法體…… B.自動(dòng)實(shí)現(xiàn)的屬性不需要指定對應(yīng)的私有字段,但需同時(shí)聲明get和set訪問器(√) C.僅當(dāng)屬性或索引器同時(shí)get和set訪問器時(shí),才允許對其中一個(gè)訪問器使用修飾符(√) D.派生類重寫基類的屬性,須保持訪問器的可訪問級別的一致(√) E.如實(shí)現(xiàn)僅有一個(gè)訪問器的接口時(shí),另一個(gè)訪問器的實(shí)現(xiàn)可有訪問修飾符(√) F.實(shí)現(xiàn)接口中的訪問器不能有訪問修飾符(√) //這幾個(gè)正確的選項(xiàng)在課件上應(yīng)該都有,我沒找到…… 28. 關(guān)于嵌套類型(課件上的一些知識點(diǎn)) 在類或結(jié)構(gòu)內(nèi)部定義的類型稱為嵌套類型。 不管外部類型是類還是結(jié)構(gòu),嵌套類型均默認(rèn)為 private,但是可以設(shè)置為 public、protected internal、protected、internal 或 private。 嵌套類型(或內(nèi)部類型)可訪問包含類型(或外部類型)。 若要訪問包含類型,請將其作為構(gòu)造函數(shù)傳遞給嵌套類型。 嵌套類型可訪問包含類型的私有成員和受保護(hù)的成員(包括所有繼承的私有成員或受保護(hù)的成員)。 29.關(guān)于接口 A.接口類似抽象類,任何繼承接口的非抽象類型一定要實(shí)現(xiàn)接口的所有成員(√) B.接口可以直接實(shí)例化()//這句話決定了這個(gè)題的難度…… C.接口可以是命名空間或類的成員,可包含方法,屬性,索引器和事件,但不具有體。(√) D.類和結(jié)構(gòu)可以繼承多個(gè)接口,接口本身可從一個(gè)或多個(gè)基接口繼承(√) E.不同接口中的同名方法,為區(qū)分需采用顯示實(shí)現(xiàn),否則同名方法將采用相同實(shí)現(xiàn)(√) F.當(dāng)基類型列表包含基類和接口時(shí),基類必須是列表中的第一項(xiàng)(√) G.顯式實(shí)現(xiàn)的成員不能通過類實(shí)例訪問,而只能通過接口實(shí)例訪問(√) //具體知識點(diǎn)要看看接口那一章的PPT 30.關(guān)于分部類和分部方法,說法錯(cuò)誤的是 A.所有部分都必須使用partial關(guān)鍵字,位置緊靠在class,struct或interface前面(√) B.各部分的可訪問性相同(√) C.某部分的添加某個(gè)修飾符,所有部分都具有該修飾符(√) D.所有部分指定的基類必須一致,忽略基類的部分不能繼承()//指定基類的所有部分必須一致,但忽略基類的部分仍繼承該基類型。 E.各部分可有不同接口,所有部分共享(√) F.分部方法聲明必須以partial開頭,并且方法必須返回void(√) 31. #region …… …… …… #endregion 本語句不考 32.關(guān)于類型 A.類可以實(shí)現(xiàn)多個(gè)接口,但只能有一個(gè)基類(√) B.類是可切分的,分布于不同源文件,稱為partial class(√) C.靜態(tài)類只能包含靜態(tài)成員(√) D.密封類(sealed修飾)能被其他類繼承()//不能 E.抽象類可以被繼承且能創(chuàng)建對象,可包含方法體()//?誰創(chuàng)建對象,抽象類反正不能 33.關(guān)于索引器 A.索引器使對象可以象數(shù)組一樣被索引(√) B.使用get和set訪問器,索引器使用關(guān)鍵字value賦值(√)//get不清楚,set確定是 C.用this關(guān)鍵字來定義索引器(√) D.無論你如何定義查詢機(jī)制,索引器都只能使用整數(shù)值來索引()//索引器不必根據(jù)整數(shù)值進(jìn)行索引,由您決定如何定義特定的查找機(jī)制。 E.索引器可以重載(√) F.索引器可有多于一個(gè)參數(shù),如訪問二維數(shù)組(√) 34.關(guān)于委托 A.委托類似C++中的函數(shù)指針(√) B.可使用命名和匿名方法實(shí)例化(√) C.允許方法以參數(shù)形式傳遞(√) D.多方法不可對應(yīng)單個(gè)事件,即一個(gè)方法對應(yīng)一個(gè)事件()//一個(gè)事件可以有多個(gè)訂閱者 E.方法與委托的簽名不必精確匹配(√) F.委托的協(xié)變與逆變主要針對父子類而言,前者針對返回值,后者針對方法參數(shù)(√)//逆變用in關(guān)鍵字,而協(xié)變用out關(guān)鍵字,輸入?yún)?shù)類型為逆變,返回值類型為協(xié)變 G.泛型委托可以定義自己的類型參數(shù)(√) 35.關(guān)于事件 A.事件是委托的特殊類型,僅能從聲明的類中喚醒(√) B.派生類不能喚醒基類聲明的事件,可采用調(diào)用或覆蓋喚醒方法的形式(√) C.事件可有多個(gè)訂閱者,無訂閱者的事件也會被調(diào)用()//不會被調(diào)用 D.標(biāo)準(zhǔn)的事件委托模式使用EventHandler和EventArgs類,針對無附加數(shù)據(jù)的事件;(√)//不太確定 E.當(dāng)事件帶數(shù)據(jù)時(shí),需從EventArgs派生新的事件數(shù)據(jù)類,并聲明相應(yīng)的委托(√)//通常是用EvengArgs做基類,是個(gè)通常的約定做法 (以下大段的代碼都經(jīng)過Visual Studio驗(yàn)證,有些注意自己加命名空間之類的輔助的東西……) 三、程序改寫或補(bǔ)全 1、下面程序采用lambda表達(dá)來實(shí)現(xiàn)時(shí)間預(yù)處理方法的關(guān)聯(lián),試改寫為匿名方法實(shí)現(xiàn)。(去年考了,注意答案和題干可能會互換) Publisher.RaiseCustomEvent+=(o,e)=> { String s=o.ToString()+” ”+e.ToString(); Console.WriteLine(s); } 答案://就是把(o,e)改為匿名的 然后把那個(gè)lambda運(yùn)算符去掉 publisher.RaiseCustomEvent += delegate(object o, CustomEventArgs e) { string s = o.ToString() + " " + e.ToString(); Console.WriteLine(s); }; 2、試為下面代碼中的重寫屬性添加具體的讀寫訪問器代碼 Public class Parent { Public virtual int TestProperty { //Notice the accessor accessibday level Protected set {} //No access modifier is used here Get { return 0;} } } public class kid:parent { private int testproperty=0 public override int tsetproperty { //在此輸入代碼 } } 答案://已經(jīng)運(yùn)行通過 namespace ConsoleApplication2 { class Program { static void Main(string[] args) { } } public class parent { public virtual int TestProperty { //Notice the accessor accessibday level protected set {} //No access modifier is used here get { return 0;} } } public class kid:parent { private int testproperty=0; public override int tsetproperty { protected set {testproperty=value;} get { return tsetproperty; } } } } ?3.試在類IndexerClass中實(shí)現(xiàn)ISomeInterface接口索引器,要求考慮數(shù)組位數(shù)超出問題 Pulic interface ISomeInterface { Int this[int index] { get; set; } } Public interface IExample { Int this[int index] { get; set; } } Class IndexerClass:ISomeInterface.IFxample { Private int[] arr=new int[100]; Public int ISomeInterface.this[int index] { get { return arr[index]; } set { arr[index]=value; } } Public int IExample.this[int.index] { } } 答案://反正這段代碼是……,大小寫、符號、字母錯(cuò)的很多,而且我分不 清哪些是題干那些是答案 以下是課件上的運(yùn)行通過的一段代碼( 貌似沒考慮數(shù)組位數(shù)超出問題╮(╯_╰)╭): public interface ISomeInterface { int this[int index] { get; set; } } public interface IExample { int this[int index] { get; set; } } class IndexerClass:ISomeInterface { private int[] arr=new int[100]; public int this[int index] { get { return arr[index]; } set { arr[index]=value; } } //public int IExample.this[int index] { } } 四、寫出程序運(yùn)行結(jié)果 1、 試寫出程序運(yùn)行結(jié)果 using System; public enum ArrivalStatus { Unknown=-3, Late=-1, OnTime=0, Early=1 }; public class Example { public static void Main() { Console.WriteLine("Members of {0}:", typeof(ArrivalStatus).Name); Console.WriteLine("第一種遍歷方式:"); var values = Enum.GetValues(typeof(ArrivalStatus)); foreach (var value in values) { ArrivalStatus status = (ArrivalStatus)Enum.ToObject(typeof(ArrivalStatus), value); Console.WriteLine(" {0} ({0:D})", status); } Console.WriteLine("第二種遍歷方式:"); string[] names = Enum.GetNames(typeof(ArrivalStatus)); Array.Sort(names); foreach (var name in names) { ArrivalStatus status = (ArrivalStatus) Enum.Parse(typeof(ArrivalStatus), name); Console.WriteLine(" {0} ({0:D})", status); } } } 運(yùn)行結(jié)果: Members of ArrivalStatus: 第一種遍歷方式: OnTime (0) Early (1) Unknown (-3) Late (-1) 第二種遍歷方式: Early (1) Late (-1) OnTime (0) Unknown (-3) 請按任意鍵繼續(xù). . . 2、[Flags] enum Days2 { None = 0x0, Sunday = 0x1, Monday = 0x2, Tuesday = 0x4, Wednesday = 0x8, Thursday = 0x10, Friday = 0x20, Saturday = 0x40 } class MyClass { Days2 meetingDays = Days2.Tuesday | Days2.Thursday; static void Main() { String[] names=Enum GetNames(typeof(Days2)) Arry Sort(names) Console WriteLine(“Members of{0}”,typeof(Days2)Name) Foreach(var name in names) { Days2status=(Day2)EnumParse(typeof(Days2)Name) Console WriteLine(“ {0}({0 D})”,status) } meetingDays = Days2.Tuesday | Days2.Thursday; meetingDays = meetingDays | Days2.Friday; Console.WriteLine("Meeting days are {0}", meetingDays); meetingDays = meetingDays ^ Days2.Tuesday; Console.WriteLine("Meeting days are {0}", meetingDays); bool test = (meetingDays & Days2.Thursday) == Days2.Thursday; Console.WriteLine("Thursday {0} a meeting day.", test == true ? "is" : "is not"); } } 代碼很多錯(cuò)誤,完整代碼為: using System; public enum ArrivalStatus { Unknown=-3, Late=-1, OnTime=0, Early=1 }; public class Example { [Flags] enum Days2 { None = 0x0, Sunday = 0x1, Monday = 0x2, Tuesday = 0x4, Wednesday = 0x8, Thursday = 0x10, Friday = 0x20, Saturday = 0x40 } class MyClass { static Days2 meetingDays = Days2.Tuesday | Days2.Thursday; static void Main() { String[] names=Enum.GetNames(typeof(Days2)); Array.Sort(names); Console.WriteLine("Members of{0}",typeof(Days2),names); foreach(var name in names) { Days2 status=(Days2)Enum.Parse(typeof(Days2),name); Console.WriteLine("{0}({0:D})",status); } meetingDays = Days2.Tuesday | Days2.Thursday; meetingDays = meetingDays | Days2.Friday; Console.WriteLine("Meeting days are {0}", meetingDays); meetingDays = meetingDays ^ Days2.Tuesday; Console.WriteLine("Meeting days are {0}", meetingDays); bool test = (meetingDays & Days2.Thursday) == Days2.Thursday; Console.WriteLine("Thursday {0} a meeting day.", test == true ? "is" : "is not"); } } } 運(yùn)行結(jié)果為: Members ofExample+Days2 Friday(32) Monday(2) None(0) Saturday(64) Sunday(1) Thursday(16) Tuesday(4) Wednesday(8) Meeting days are Tuesday, Thursday, Friday Meeting days are Thursday, Friday Thursday is a meeting day. 請按任意鍵繼續(xù). . . 3、 [Flags] enum Days2 { None = 0x0, Sunday = 0x1, Monday = 0x2, Tuesday = 0x4, Wednesday = 0x8, Thursday = 0x10, Friday = 0x20, Saturday = 0x40 } class MyClass { static Days2 meetingDays = Days2.Tuesday | Days2.Thursday; static void Main() { String[] names=Enum.GetNames(typeof(Days2)); Array.Sort(names); Console.WriteLine("Members of{0}",typeof(Days2),names); foreach(var name in names) { Days2 status=(Days2)Enum.Parse(typeof(Days2),name); Console.WriteLine("{0}({0:D})",status); } meetingDays = Days2.Tuesday | Days2.Thursday; meetingDays = meetingDays | Days2.Friday; Console.WriteLine("Meeting days are {0}", meetingDays); meetingDays = meetingDays ^ Days2.Tuesday; Console.WriteLine("Meeting days are {0}", meetingDays); bool test = (meetingDays & Days2.Thursday) == Days2.Thursday; Console.WriteLine("Thursday {0} a meeting day.", test == true ? "is" : "is not"); string[] formats= { "G", "F", "D", "X"}; foreach (var fmt in formats) Console.WriteLine(meetingDays.ToString(fmt)); } } 運(yùn)行結(jié)果和上面類似無非多了幾句: Members ofExample+Days2 Friday(32) Monday(2) None(0) Saturday(64) Sunday(1) Thursday(16) Tuesday(4) Wednesday(8) Meeting days are Tuesday, Thursday, Friday Meeting days are Thursday, Friday Thursday is a meeting day. Thursday, Friday Thursday, Friday 48 00000030 請按任意鍵繼續(xù). . . 4、 using System; using System.Collections.Generic; using System.Text; namespace SimpleString { class Program { static void Main(string[] args) { string a = "Simple String"; string b = a; Console.WriteLine("balabalabalabala:"+((object)a == (object)b)); b = "Changed"; Console.WriteLine("balabalabalabala:"+((object)a == (object)b)); b = "Simple String"; Console.WriteLine( "balabalabalabala:"+(a == b)); Console.ReadLine(); } } } 運(yùn)行結(jié)果: balabalabalabala:True balabalabalabala:False balabalabalabala:True 6、as的應(yīng)用(這是修改后能運(yùn)行的代碼) using System; using System.Collections.Generic; using System.Text; using System.Collections; namespace AsExample { class Program { static void Main(string[] args) { ArrayList myarray = new ArrayList(); string asstring; myarray.Add("The first string"); myarray.Add(23); myarray.Add("The second string"); myarray.Add(26); myarray.Add(41); myarray.Add("The third string"); foreach (object obj in myarray) { asstring = obj as string; if (asstring != null) { Console.WriteLine(asstring); } else Console.WriteLine("not a string"); } Console.ReadLine(); } } } 運(yùn)行結(jié)果: The first string not a string The second string not a string not a string The third string 五、問答題(這題無能為力,到課件總結(jié)標(biāo)準(zhǔn)答案……) 1、應(yīng)用程序域與進(jìn)程邊界的異同 官方概念http://msdn.microsoft.com/ZH-CN/library/kt21t9h7 進(jìn)程 Windows 操作系統(tǒng)通過在各應(yīng)用程序自己的進(jìn)程中運(yùn)行它們來保護(hù)各應(yīng)用程序不受其他應(yīng)用程序的影響。如果某個(gè)應(yīng)用程序失敗了,只有它的進(jìn)程會受到影響;其他進(jìn)程中的應(yīng)用程序可以繼續(xù)執(zhí)行。當(dāng)然,由于一個(gè)進(jìn)程中的內(nèi)存地址在其他進(jìn)程中沒有任何意義,因此在一個(gè)進(jìn)程中調(diào)用來自某個(gè)其他進(jìn)程的函數(shù)可能會很復(fù)雜。封送處理是針對以下事件給出的術(shù)語:當(dāng)調(diào)用和所有參數(shù)都打包在一個(gè)進(jìn)程中,但在另一個(gè)進(jìn)程中解除打包以便跨進(jìn)程邊界的調(diào)用能夠成功時(shí)發(fā)生的事件。 應(yīng)用程序域 在托管環(huán)境中,應(yīng)用程序域(或邏輯進(jìn)程)和上下文以最低的成本提供隔離和安全,并且通過利用托管代碼是可驗(yàn)證的類型安全代碼這一事實(shí)以及其他事實(shí),使其擴(kuò)展能力比操作系統(tǒng)進(jìn)程強(qiáng)。每個(gè)托管應(yīng)用程序都運(yùn)行在應(yīng)用程序域中,不管其他應(yīng)用程序是否代表它啟用了域,也不管宿主環(huán)境是否為它啟用了域。.NET 遠(yuǎn)程處理可幫助提供基礎(chǔ)結(jié)構(gòu),以便以一種直接的方式在應(yīng)用程序域之間進(jìn)行通信,這種通信受安全技術(shù)的保護(hù)。 2、 元數(shù)據(jù)的功能及其包含的主要信息 元數(shù)據(jù)是一種二進(jìn)制信息,用以描述存儲在CLR中的可移植可執(zhí)行文件(PE)或存儲在內(nèi)存中的程序。 當(dāng)編譯代碼為PE文件時(shí),便會將元數(shù)據(jù)插入到該文件的一個(gè)部分中;而將代碼轉(zhuǎn)換為Microsoft中間語言(MSIL),并將其插入到該文件的另一部分中。 在模塊或程序集中定義和引用的每個(gè)類型和成員都將在元數(shù)據(jù)中進(jìn)行說明。 當(dāng)執(zhí)行代碼時(shí),CLR將加載元數(shù)據(jù)到內(nèi)存中,并引用它來發(fā)現(xiàn)有關(guān)代碼的類、成員、繼承等信息 元數(shù)據(jù)以非特定語言方式描述在代碼中定義的每個(gè)類型和成員 元數(shù)據(jù)存儲以下信息: 程序集的說明,包括標(biāo)識(名稱、版本、區(qū)域性、公鑰)、導(dǎo)出的類型、該程序集所依賴的其他程序集、運(yùn)行所需的安全權(quán)限。 類型的說明,包括:名稱、可見性、基類和實(shí)現(xiàn)的接口; 成員(方法、字段、屬性、事件、嵌套的類型)。 特性,修飾類型和成員的其他說明性元素。 3、 C#中的值類型與引用類型的區(qū)別 存儲在堆棧的數(shù)據(jù)類型就是值類型,存儲在內(nèi)存中堆的數(shù)據(jù)類型就是引用類型。 當(dāng)值類型的變量被賦值時(shí),在堆棧中創(chuàng)建的是兩個(gè)相同的數(shù)據(jù)副本,其中一個(gè)變量值的變,不會引起另一個(gè)變量的改變。 當(dāng)引用類型的變量被賦值時(shí),在內(nèi)存堆中創(chuàng)建的是對同一個(gè)位置的兩個(gè)引用。 值數(shù)據(jù)類型的變量在傳遞的時(shí)候,傳遞的是數(shù)據(jù)的值;引用數(shù)據(jù)類型的變量在傳遞的時(shí)候,傳遞的事數(shù)據(jù)的地址。 4、 結(jié)合下面程序,從發(fā)布和訂閱者兩方面說明事件-委托處理機(jī)制,要求有語言描述有具體語句。(照片上看不清,所以沒辦法給大家弄了……) 這鬼知道怎么描述…… 六、編程題(考了) 下面的程序使用迭代器實(shí)現(xiàn)了對集合類枚舉,試改用索引器來實(shí)現(xiàn),要求。。。(看不清) public class DaysOfTheWeek : System.Collections.IEnumerable { string[] days = { "Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat" }; public System.Collections.IEnumerator GetEnumerator() { for (int i = 0; i < days.Length; i++) { yield return days[i]; } } } class TestDaysOfTheWeek { static void Main() { // Create an instance of the collection class DaysOfTheWeek week = new DaysOfTheWeek(); // Iterate with foreach foreach (string day in week) { System.Console.Write(day + " "); } }- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
5 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 合肥 工業(yè)大學(xué) net 題庫
鏈接地址:http://www.hcyjhs8.com/p-12813205.html