C程序员面试必答5300.docx





《C程序员面试必答5300.docx》由会员分享,可在线阅读,更多相关《C程序员面试必答5300.docx(61页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C# 程序员面试必答1.静态变量和非静态变量的区别? 答: 静态变量: 静态变量使用 static 修饰符进行声明 在所属类被装载时创建 通过类进行访问 所属类的所有实例的同一静态变量都是同一个值 非静态变量: 不带有 static 修饰符声明的变量称做非静态变量 在类被实例化时创建 通过对象进行访问 同一个类的不同实例的同一非静态变量可以是不同的值 示例:usingg Syysteem;usingg Syysteem.CColllecttionns.GGeneericc;usingg Syysteem.TTextt;namesspacce EExammplee01 cclasss PProg
2、gramm claass Claass11 puubliic sstattic Strringg sttatiicSttr = &aamp;quoot;CClasss&aamp;quoot; puubliic SStriing nottstaaticcStrr = &ammp;qquott;Obbj&aamp;quoot; staaticc vooid Maiin(sstriing aargss) /静态变变量通过过类进行行访问,该该类所有有实例的的同一静静态变量量都是同同一个值值 Coonsoole.WriiteLLinee(&aamp;quoot;CClasss1s sstatticSSt
3、r: 00&aamp;quoot;, Cllasss1.sstatticSStr); Cllasss1 ttmpOObj11 = neww Cllasss1(); tmmpObbj1.nottstaaticcStrr = &ammp;qquott;tmmpObbj1&p;quuot; Cllasss1 ttmpOObj22 = neww Cllasss1(); tmmpObbj2.nottstaaticcStrr = &ammp;qquott;tmmpObbj2&p;quuot; /非静态态变量通通过对象象进行访访问,不不同对象象的同一一非静态态变量可可以有不不同的值值 Coons
4、oole.WriiteLLinee(&aamp;quoot;ttmpOObj11s nottstaaticcStrr: 0&p;quuot;, ttmpOObj11.nootsttatiicSttr); Coonsoole.WriiteLLinee(&aamp;quoot;ttmpOObj22s nottstaaticcStrr: 0&p;quuot;, ttmpOObj22.nootsttatiicSttr); Coonsoole.ReaadLiine(); 复制代码结果: CClasss1s sstatticSStr: Cllasss tmmpObbj1s nnotsstatt
5、icSStr: tmmpObbj1 tmppObjj2ss nootsttatiicSttr: tmppObjj2 22.coonstt 和 staaticc reeadoonlyy 区别别? 答答: cconsst 用用 coonstt 修饰饰符声明明的成员员叫常量量,是在在编译期期初始化化并嵌入入到客户户端程序序 sttatiic rreaddonlly 用用 sttatiic rreaddonlly 修修饰符声声明的成成员依然然是变量量,只不不过具有有和常量量类似的的使用方方法:通通过类进进行访问问、初始始化后不不可以修修改。但但与常量量不同的的是这种种变量是是在运行行期初始始化 示示例
6、: 测试类类:usingg Syysteem;usingg Syysteem.CColllecttionns.GGeneericc;usingg Syysteem.TTextt;namesspacce EExammplee02LLib ppubllic claass Claass11 pubblicc coonstt Sttrinng sstrCConsst = &aamp;quoot;CConsst&aamp;quoot; pubblicc sttatiic rreaddonlly SStriing strrStaaticcReaadonnly = &p;quuot;StaaticcR
7、eaadonnly&p;quuot; /ppubllic connst Strringg sttrCoonstt = &ammp;qquott;Coonstt Chhangged&p;quuot; /ppubllic staaticc reeadoonlyy Sttrinng sstrSStatticRReaddonlly = &aamp;quoot;SStatticRReaddonlly CChanngedd&ammp;qquott; /55-1-a-ss-p-x复制代码客户端代码码:usingg Syysteem;usingg Syysteem.CColllecttionns.
8、GGeneericc;usingg Syysteem.TTextt;usingg Exxampple002Liib;namesspacce EExammplee02 cclasss PProggramm staaticc vooid Maiin(sstriing aargss) /修改EExammplee02中中Claass11的sttrCoonstt初始值值后,只只编译EExammplee02LLib项项目 /然后到到资源管管理器里里把新编编译的EExammplee02LLib.dlll拷贝EExammplee02.exee所在的的目录,执执行Exxampple002.eexe /切不可可在
9、IDDE里直直接调试试运行因因为这会会重新编编译整个个解决方方案! /可以看看到sttrCoonstt的输出出没有改改变,而而strrStaaticcReaadonnly的的输出已已经改变变 /表明CConsst变量量是在编编译期初初始化并并嵌入到到客户端端程序,而而StaaticcReaadonnly是是在运行行时初始始化的 Coonsoole.WriiteLLinee(&aamp;quoot;sstrCConsst : 00&aamp;quoot;, Cllasss1.sstrCConsst); Coonsoole.WriiteLLinee(&aamp;quoot;sstrSStattic
10、RReaddonlly : 00&aamp;quoot;, Cllasss1.sstrSStatticRReaddonlly); Coonsoole.ReaadLiine(); 复制代码结果: sstrCConsst : Coonstt sttrSttatiicReeadoonlyy : StaaticcReaadonnly 修改后后的示例例: 测测试类:usingg Syysteem;usingg Syysteem.CColllecttionns.GGeneericc;usingg Syysteem.TTextt;namesspacce EExammplee02LLib ppubllic c
11、laass Claass11 /ppubllic connst Strringg sttrCoonstt = &ammp;qquott;Coonstt&ammp;qquott; /ppubllic staaticc reeadoonlyy Sttrinng sstrSStatticRReaddonlly = &aamp;quoot;SStatticRReaddonlly&aamp;quoot; pubblicc coonstt Sttrinng sstrCConsst = &aamp;quoot;CConsst CChanngedd&ammp;qquott; pubblicc sttatiic
12、 rreaddonlly SStriing strrStaaticcReaadonnly = &p;quuot;StaaticcReaadonnly Chaangeed&aamp;quoot; 复制代码结果 sttrCoonstt : Connst strrStaaticcReaadonnly : SStatticRReaddonlly CChanngedd 3.extternn 是什什么意思思? 答答: eexteern 修饰符符用于声声明由程程序集外外部实现现的成员员函数 经常用用于系统统APII函数的的调用(通通过 DDllIImpoort )。注注意,和和DlllImpportt
13、一起使使用时要要加上 staaticc 修饰饰符 也也可以用用于对于于同一程程序集不不同版本本组件的的调用(用用 exxterrn 声声明别名名) 不不能与 absstraact 修饰符符同时使使用511asppx 示示例:usingg Syysteem;usingg Syysteem.CColllecttionns.GGeneericc;usingg Syysteem.TTextt;usingg Syysteem.RRunttimee.InnterropSServvicees;namesspacce EExammplee03 cclasss PProggramm /注注意DlllImmpor
14、rt是一一个Atttriibutte PProppertty,在在Sysstemm.Ruuntiime.IntteroopSeerviicess命名空空间中定定义 /eexteern与与DlllImpportt一起使使用时必必须再加加上一个个staaticc修饰符符 DlllImmporrt(&p;quuot;Useer322.dlll&aamp;quoot;) pubblicc sttatiic eexteern intt MeessaageBBox(intt Haandlle, strringg Meessaage, sttrinng CCapttionn, iint Typpe);
15、 staaticc innt MMainn() sttrinng mmySttrinng; Coonsoole.Wriite(&ammp;qquott;Ennterr yoour messsagge: &ammp;qquott;); myyStrringg = Connsolle.RReaddLinne(); reeturrn MMesssageeBoxx(0, myyStrringg, &p;quuot;My Messsagge BBox&p;quuot;, 00); 复制代码结果: 44.abbstrractt 是什什么意思思? 答答: aabsttracct 修修饰符可可以用
16、于于类、方方法、属属性、事事件和索索引指示示器(iindeexerr),表表示其为为抽象成成员 aabsttracct 不不可以和和 sttatiic 、vvirttuall 、ooverrridde 一一起使用用 声明明为 aabsttracct 成成员可以以不包括括实现代代码,但但只有类类中还有有未实现现的抽象象成员,该该类就不不可以被被实例化化,通常常用于强强制继承承类必须须实现某某一成员员 示例例:usingg Syysteem;usingg Syysteem.CColllecttionns.GGeneericc;usingg Syysteem.TTextt;namesspacce E
17、Exammplee04 #reggionn 基类类,抽象象类 ppubllic absstraact claass BasseCllasss /抽抽象属性性,同时时具有gget和和sett访问器器表示继继承类必必须将该该属性实实现为可可读写 pubblicc abbstrractt Sttrinng AAttrribuute geet; seet; /抽抽象方法法,传入入一个字字符串参参数无返返回值 pubblicc abbstrractt vooid Funnctiion(Strringg vaaluee); /抽抽象事件件,类型型为系统统预定义义的代理理(deeleggatee):EEve
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序员 面试 必答 5300

限制150内