freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c程序員面試必答-資料下載頁(yè)

2025-07-07 11:46本頁(yè)面
  

【正文】 臺(tái)調(diào)用服務(wù)(Platform Invocation Services),即P/Invoke 如調(diào)用系統(tǒng)的 API 或與 COM 對(duì)象打交道,通過(guò) 命名空間 雖然使用 Interop 非常方便,但據(jù)估計(jì)每次調(diào)用事務(wù)都要執(zhí)行 10 到 40 條指令,算起來(lái)開(kāi)銷(xiāo)也不少,所以我們要盡量少調(diào)用事務(wù) 如果非用不可,建議本著一次調(diào)用執(zhí)行多個(gè)動(dòng)作,而不是多次調(diào)用每次只執(zhí)行少量動(dòng)作的原則 和 String 的區(qū)別? 答: String 雖然是一個(gè)引用類(lèi)型,但在賦值操作時(shí)會(huì)產(chǎn)生一個(gè)新的對(duì)象,而 StringBuilder 則不會(huì) 所以在大量字符串拼接或頻繁對(duì)某一字符串進(jìn)行操作時(shí)最好使用 StringBuilder,不要使用 String 示例: using System。using 。using 。namespace Example22{ class Program { static void Main(string[] args) { const int cycle = 100000。 long vTickCount = 。 String str = null。 for (int i = 0。 i cycle。 i++) str += ()。 (amp。amp。quot。String: {0} MSELamp。amp。quot。, vTickCount)。 vTickCount = 。 //看到這個(gè)變量名我就生氣,奇怪為什么大家都使它呢? :) StringBuilder sb = new StringBuilder()。 for (int i = 0。 i cycle。 i++) (i)。 (amp。amp。quot。StringBuilder: {0} MSELamp。amp。quot。, vTickCount)。 ()。 } }}復(fù)制代碼結(jié)果: String: 102047 MSEL StringBuilder: 46 MSEL 和 implicit 的含義? 答: explicit 和 implicit 屬于轉(zhuǎn)換運(yùn)算符,如用這兩者可以讓我們自定義的類(lèi)型支持相互交換 explicti 表示顯式轉(zhuǎn)換,如從 A B 必須進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換(B = (B)A) implicit 表示隱式轉(zhuǎn)換,如從 B A 只需直接賦值(A = B) 隱式轉(zhuǎn)換可以讓我們的代碼看上去更漂亮、更簡(jiǎn)潔易懂,所以最好多使用 implicit 運(yùn)算符。不過(guò)!如果對(duì)象本身在轉(zhuǎn)換時(shí)會(huì)損失一些信息(如精度),那么我們只能使用 explicit 運(yùn)算符,以便在編譯期就能警告客戶調(diào)用端 示例: using System。using 。using 。namespace Example23{ class Program { //本例靈感來(lái)源于大話西游經(jīng)典臺(tái)詞“神仙?妖怪?”主要是我實(shí)在想不出什么好例子了 class Immortal { public string name。 public Immortal(string Name) { name = Name。 } public static implicit operator Monster(Immortal value) { return new Monster( + amp。amp。quot。:神仙變妖怪?偷偷下凡即可。amp。amp。quot。)。 } } class Monster { public string name。 public Monster(string Name) { name = Name。 } public static explicit operator Immortal(Monster value) { return new Immortal( + amp。amp。quot。:妖怪想當(dāng)神仙?再去修煉五百年!amp。amp。quot。)。 } } static void Main(string[] args) { Immortal tmpImmortal = new Immortal(amp。amp。quot。紫霞仙子amp。amp。quot。)。 //隱式轉(zhuǎn)換 Monster tmpObj1 = tmpImmortal。 ()。 Monster tmpMonster = new Monster(amp。amp。quot。孫悟空amp。amp。quot。)。 //顯式轉(zhuǎn)換 Immortal tmpObj2 = (Immortal)tmpMonster。 ()。 ()。 } }}復(fù)制代碼結(jié)果: 紫霞仙子:神仙變妖怪?偷偷下凡即可。 孫悟空:妖怪想當(dāng)神仙?再去修煉五百年! 有什么用? 答: params 關(guān)鍵字在方法成員的參數(shù)列表中使用,為該方法提供了參數(shù)個(gè)數(shù)可變的能力 它在只能出現(xiàn)一次并且不能在其后再有參數(shù)定義,之前可以 示例: using System。using 。using 。namespace ConsoleApplication1{ class App { //第一個(gè)參數(shù)必須是整型,但后面的參數(shù)個(gè)數(shù)是可變的。 //而且由于定的是object數(shù)組,所有的數(shù)據(jù)類(lèi)型都可以做為參數(shù)傳入 public static void UseParams(int id, params object[] list) { (id)。 for (int i = 0。 i 。 i++) { (list[i])。 } } static void Main() { //可變參數(shù)部分傳入了三個(gè)參數(shù),都是字符串類(lèi)型 UseParams(1, amp。amp。quot。aamp。amp。quot。, amp。amp。quot。bamp。amp。quot。, amp。amp。quot。camp。amp。quot。)。 //可變參數(shù)部分傳入了四個(gè)參數(shù),分別為字符串、整數(shù)、浮點(diǎn)數(shù)和雙精度浮點(diǎn)數(shù)數(shù)組 UseParams(2, amp。amp。quot。damp。amp。quot。, 100, , new double[] { , })。 ()。 } }}復(fù)制代碼結(jié)果: 1 a b c 2 d 100 [] ? 答: 反射,Reflection,通過(guò)它我們可以在運(yùn)行時(shí)獲得各種信息,如程序集、模塊、類(lèi)型、字段、屬性、方法和事件 通過(guò)對(duì)類(lèi)型動(dòng)態(tài)實(shí)例化后,還可以對(duì)其執(zhí)行操作 一般用于插件式框架程序和設(shè)計(jì)模式的實(shí)現(xiàn),當(dāng)然反射是一種手段可以充分發(fā)揮其能量來(lái)完成你想做的任何事情(前面好象見(jiàn)過(guò)一位高人用反射調(diào)用一個(gè)官方類(lèi)庫(kù)中未說(shuō)明的函數(shù)。) 示例: using System。using 。using 。namespace Example25Lib{ public class Class1 { private string name。 private int age。 //如果顯式的聲明了無(wú)參數(shù)構(gòu)造函數(shù),客戶端只需要用程序集的CreateInstance即可實(shí)例化該類(lèi) //在此特意不實(shí)現(xiàn),以便在客戶調(diào)用端體現(xiàn)構(gòu)造函數(shù)的反射實(shí)現(xiàn) //public Class1() //{ //} public Class1(string Name, int Age) { name = Name。 age = Age。 } public void ChangeName(string NewName) { name = NewName。 } public void ChangeAge(int NewAge) { age = NewAge。 } public override string ToString() { return (amp。amp。quot。Name: {0}, Age: {1}amp。amp。quot。, name, age)。 } }}復(fù)制代碼反射實(shí)例化對(duì)象并調(diào)用其方法,屬性和事件的反射調(diào)用略去 using System。using 。using 。//注意添加該反射的命名空間using 。namespace Example25{ class Program { static void Main(string[] args) { //加載程序集 Assembly tmpAss = ( + amp。amp。quot。amp。amp。quot。)。 //遍歷程序集內(nèi)所有的類(lèi)型,并實(shí)例化 Type[] tmpTypes = ()。 foreach (Type tmpType in tmpTypes) { //獲取第一個(gè)類(lèi)型的構(gòu)造函數(shù)信息 ConstructorInfo[] tmpConsInfos = ()。 foreach (ConstructorInfo tmpConsInfo in tmpConsInfos) { //為構(gòu)造函數(shù)生成調(diào)用的參數(shù)集合 ParameterInfo[] tmpParamInfos = ()。 object[] tmpParams = new object[]。 for (int i = 0。 i 。 i++) { tmpParams[i] = (tmpParamInfos[i].)。 if (tmpParamInfos[i]. == amp。amp。quot。amp。amp。quot。) { tmpParams[i] = amp。amp。quot。Clarkamp。amp。quot。 } } //實(shí)例化對(duì)象 object tmpObj = (tmpParams)。 (tmpObj)。 //獲取所有方法并執(zhí)行 foreach (MethodInfo tmpMethod in ()) { //為方法的調(diào)用創(chuàng)建參數(shù)集合 tmpParamInfos = ()。 tmpParams = new object[]。 for (int i = 0。 i 。 i++) { tmpParams[i] = (tmpParamInfos[i].)。
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1