.NET程序员面试秘笈

上传人:夺命阿水 文档编号:675614 上传时间:2023-10-10 格式:DOCX 页数:783 大小:4.23MB
返回 下载 相关 举报
.NET程序员面试秘笈_第1页
第1页 / 共783页
.NET程序员面试秘笈_第2页
第2页 / 共783页
.NET程序员面试秘笈_第3页
第3页 / 共783页
.NET程序员面试秘笈_第4页
第4页 / 共783页
.NET程序员面试秘笈_第5页
第5页 / 共783页
点击查看更多>>
资源描述

《.NET程序员面试秘笈》由会员分享,可在线阅读,更多相关《.NET程序员面试秘笈(783页珍藏版)》请在课桌文档上搜索。

1、.NET程序员面试秘笈1 .第1章.NET概念题2 .第2章.NET编程语言基础题3 .第3章基类、接口和泛型4 .第4章.NET高级特性5 .第5章WindOWS窗体编程6 .第6章AD0.NET编程7 .第7章S。L查询及LIN。8 .第8章ASP.NET程序开发19 .第9章ASP.NET程序开发210 .第10章WebSerViCe和远程处理11 .第11章算法和趣味题12 .版权第1章NET概念题本章内容包含面向对象程序设计和.NET的基础概念题,由于这部分题目涉及的范围比较广,因此在很多公司的面试题中占了比较大的比重。很多.NET程序员在编写代码时非常熟练,但往往缺乏对基础知识的深

2、刻理解,从而导致面试失败。这类知识是程序设计的基础,如果不加以重视,程序编写就没有创造性,只能学一步,做一步。面向对象编程是当前流行的编程方式,被大多数高级语言支持。NET程序同样是基于面向对象的设计,只有深刻理解面向对象的编程理念,才可以开发出结构良好的、更易维护的.NET程序。说明:本书采用C#语言编写.NET程序示例。面试题1简述面向对象的程序设计思想【考点】面向对象程序设计思想概念的理解,面向对象设计的应用范围,用c#实现面向对象设计方法。【出现频率】【解答】面向对象是程序开发的一种机制,其特征为封装、继承、多态及抽象。以面向对象的方式编写程序时,需要将复杂的项目抽象为多个对象互相协作

3、的模型;然后编写类型的结构,声明或实现类型的成员,即描述对象的特征和行为。在项目中编写不同的类型完成不同的功能,最后在程序中通过类的实例处理实际的问题。说明:此处类型不仅仅指类,还可能包括接口、结构等。【分析】面向对象编程简称为OOP,其“对象”的含义类似于生活中的“物体”。相对于以前的编程方式,面向对象编程更注重于人的思维方式,可极大地提高程序的开发效率。面向对象编程将程序看作多个互相分离的功能模块,各个模块之间分工合作,并且有着极低的耦合度。面向对象编程中最重要的概念是类(即CIaSS),类是描述各个功能模块的模板,而程序中工作的模块实体被称为对象(SPobject)0类和对象的概念好比动

4、物学的分类,猫科动物就是一个类,老虎也是一个类,并且属于猫科动物类,动物园中某只老虎的实体则是一个对象。老虎类拥有猫科动物类的所有特征和行为,但有自己独特的特征和行为。而某只老虎符合老虎类特征描述和行为定义,可能还有部分独特的特征。所以类可以继承另一个类,如老虎类继承了猫科动物类。类是产生对象的一个模板,对象拥有类的一切特征和行为。关于类和对象的基本关系如图Ll所示。面向对象编程的重点是类的设计,面试者应能熟练地编写简单的类并创建对象,展示基本的OOP语法。以图1.1为例,编写图中相应的类,并通过虎类创建一只体重为IoOkg、长度为200Cm的老虎对象。新建一个.CS文件,并命名为O叩Test

5、.cs,编写代码如程序Ll所示。程序1.1老虎对象的创建:OoPTeSLcsOlusingSystem;02classOopTest0304staticvoidMain(Stringargs)05)06ConSOle.WriieLine(请输入老虎对象的体重和长度(逗号分隔的整数):”);07stringinput=Console.ReadLine();08intpos=input.lndexf(,7);09stringW=input.Substring(O,pos);10 string1=input.Substring(pos+1);11 Tigerchinatiger=newTiger(w

6、,1);12 COnSOIe.WriteLine(老虎已经创建完成!);131415161718192021222324252627282930313233王”。34353637ConSoIe.WriteLine(这只老虎的重量是:+Chinaliger.weighl+kg);CoIISOIe.WriteLine(这只老虎的长度是:+ChinatigerJength+ncm);ConSoIe.WriteLine(老虎的特征是:+Tiger.msg);COnSOIe.WriteLine(老虎一般生存在:+Tiger.habitat);COnSole.WriteLine(老虎像猫吗?+Tiger.

7、cat();)classMammal哺乳动物类名称(protectedstaticboolviviparous=true;有胎生的特征protectedstaticboolFeeding=true;有喂养的特征classFelid:Mammal猫科动物类名称(继承于哺乳动物类)protectedstaticboolcatlike=true;类似猫的特征protectedstaticboolsensitivity=true;有敏感的特征classTiger:Felid虎类名称(继承于猫科动物类)(有各种特征internalstaticstringmsg=凶猛、会游泳、会爬树,有漂亮的花纹,被称为

8、“兽中之internalstaticstringhabitat=森林;栖息地在森林internalstringweight;体重internalstringlength;长度3839 this.weight=w;40 IhisJength=1;41 )42 internalstaticboolcat()通过静态方法获取继承的属性43 44 returnTigerxatlike;45 )46 )在命令行下编译OoPTeSLcs后,执行OOPTeSt程序,其效果如图1.2所示。图1.2OoPTeSt的执行结果当用户首先输入了“50,100”,程序创建了一只老虎的对象,并访问了部分数据字段和方法。说

9、明:下文所有当前章的程序示例将在当前章编号的目录下创建并运行,最后进行归档,例如第1章每个示例文件归档到ChOl目录下,而第2章每个示例文件归档到Ch02目录下,依此类推。面试题2用代码描述类和对象的区别【考点】理解类和对象的关系,在实际应用中类和对象的作用。【出现频率】【解答】类(即ClaSS)指一类事物,对象(SPobject)指属于这一类事物的实体。类定义了对象的相关数据和方法,类通过构造函数生成对象,对象实现了类的定义,旦挑有具体的数据。在ChOl目录下新建一个程序文件,并命名为ClaSSobj.cs,编写代码如程序1.2所示。程序1.2类和对象:ClassObj.csOlusingS

10、ystem;02classClassObj0304staticvoidMain(Stringargs)05(06ConSole.WriteLine(请输入动物对象的类别(pig,dog,cat):1,);07stringanimal=Console.ReadLine();读取用户输入到animal变量08ConSoIe.WriteLine(请输入动物对象的品种(如“波斯“):”);09stringIp=Console.ReadLine();读取用户输入到tp变量10 COnSOIe.WriteLine(请输入动物对象的体重:”);11 stringW=Console.ReadLine();读取

11、用户输入到W变量12 switch(animal.ToLowerInvariant()/判断animal变量值13 14 case,pig:15 Pigpg=newPig(tp,w);/根据tp和W的值创建Pig类的对象16 COnSOIe.Write(n你创建了一只”+Pigmame+!);17 COnSoIe.WriteLine(它的品种是:,+pg.type+!”);18 ConSoIe.WriteLine(这只”+Pig.name+”的重量是:+pg.weight+,kg);19202122232425262728293031323334353637383940414243Consol

12、e.WriteLine(Pig.name+”的特征是:+Pig.msg);break;casedog:Dogdg=newDog(tp,w);根据tp和W的值创建Dog类的对象COnSOle.Write(n你创建了一只“+Dog.name+!);ConSoIe.WriteLine(它的品种是:+dg.type+!”);Console.WriteLine(R+Dog.name+”的重量是:+dg.weight+kg);Console.WriteLine(Dog.name+”的特征是:+Dog.msg);break;default:Catct=newCat(tp,w);/根据tp和W的值创建Cat类

13、的对象COnSOle.Write(n你创建了一只+Cat.name+!);COnSOle.WriteLine(它的品种是:+ct.type+“!);COnSoIe.WriteLine(这只+Cat.name+”的重量是:+ct.weight+kgn);Console.WriteLine(Cat.name+”的特征是:+Cat.msg);break;)classPig猪类名称internalstaticstringname=卜猪;有各种特征internalstaticstringmsg=肥胖、迟钝44454647484950515253545556575859606162636465666768

14、internalsiringweight;体重internalPig(stringlp,siringw)/构造函数,接给品种和体重赋值直this.type=tp;this.weight=w;I)classDog狗类名称internalstaticstringname=小狗;internalstaticstringmsg=属于犬科动物,是人类的好朋友;有各种特征internalstringtype;品种internalstringweight;体重internalDog(stringtp,stringw)构造函数,直接给品种和体重赋值(this.type=tp;this.weight=w;Icl

15、assCat猫类名称品种internalstaticstringname=小猫”;internalstaticstringmsg=安静、敏感;有各种特征internalstringtype;69 internalCat(stringtp,stringw)构造函数,直接给品种和体重赋值70 71 this.type=tp;72 this.weight=w;73 )74 )例子比较简单,但可以充分说明类和对象的关系,3个动物类的描述如图1.3所示。PigDogCat+name:SlrinR=小辨name:Strjng=小啊name:string=小猫+msff:Strina=肥胖、迟钝+ms:st

16、rinu=届十犬科动物,是人类的好朋友+mstt:Strinu=安怖、敏感+type:string+weight:string+type:string+weight:string+type:string+weight:stringPig(int:string,inw:string)Dogfint:string,inW:string)Cat(intp:string,inW:string)图1.3类和对象程序的执行结果图1.3为3个类的定义,在主程序中用户输入动物的类别、品种和体重数据后,即根据以上类为模板创建了一只小动物对象,并输出其数据。在命令行下编译CIaSSObj.cs后,执行ClaSSc

17、)bj程序,其效果如图1.4所示。【分析】简单来说,类是用于描述对象的特征、状态和行为的模板,是抽象的概念。例如虎类可以用于描述所有老虎个体的共同特征及行为,但是虎类不能指定某一只老虎的个体。而对象指拥有具体特征、状态和行为的实体,例如某只老虎就是虎类的一个对象,它遵从类所描述的一切特征和行为。-ll l-3JK管理员:VisualStudio命令提示(2010)XCh01,cscClaSSObj.cs|1icrosoftUisualCtt2010编译器4.0.30319.1版版权所有CMicrosoftCorporation0保留所有权利。?:ch01CIassObjJ清榆人动物对象的类别(

18、Pg,dog.cat),dog舞人动物对象的品种(如“波斯”)麓入动物对象的体重:20倏创建了三只小卸它的品种是:金毛!位只不奥的重量息20kg“谓的蒋征是:属于犬科动物,是人类的好朋友F:ch01图1.4类和对象程序的执行结果面试题3描述PriVate、protectedintemal和PiIbliC修饰符的作用【考点】理解访问权限存在的意义,各种访问权限的作用,在代码中灵活应用访问权限。【出现频率】【解答】1.PriVate修饰符private修饰符用于设置类或类成员的访问权限仅为所属类的内部,private也被称为私有修饰符。某些时候需要访问私有类成员时,可通过get和Set访问器读取或

19、修改。本例通过对类的私有成员及私有类的访问,展示PriVate修饰符的保护作用。在ChOl目录下新建一个程序文件,并命名为ModPriVate.cs,编写代码如程序1.3所不。程序1.3PriVate修饰符示例:ModPrivate.esOlusingSystem;0203classModPrivate0405staticvoidMain(Stringargs)Dogdg=newDog(可卡);Console.WriteLine(一只小狗创建成功!);Console.WriteLine(iH,+dg.name+”的品种是:+dg.type);由于参数类型为字符串的构造函数是私有的,这里不能直接

20、创建实例对象/Tigertg=newTiger(“华南虎”);由于Tiger类所嵌套的ZOOTiger类是私有类,所以无法直接访问/TigenZooTigertz=newTiger.ZooTiger();Tigertg=newTiger(true);参数类型为布尔型的构造函数可创建Tiger类的对象COnSOle.WriteLineCn一只老虎创建成功!);COnSOIe.WriteLine(这只+tg.name+”的品种是华南虎吗?+tg.ischinatiger);classDog狗类名称internalstringname=小狗;06070809101112131415161718192

21、021222324252627282930private string _type;品种internal Dog(string tp)构造函数,直接给品种赋值this._type=tp;internal string type/type变量,gel访问器获取私有成员ype的值getreturnthis._type;31323334353637383940414243444546474849505152535455classTiger虎类名称internalstringname=老虎;privatestring_type;品种privateboolJschinatiger;/是否为华南虎priv

22、ateTiger(stringtp)构造函数,直接给品种赋值(lhis._type=tp;IinternalTiger(boolchinatiger)构造函数,直接给Jschinatiger赋布尔型值(this._ischinatiger=chinatiger;)internalstringischinatiger/ischinatiger变量,get访问器获取返回值(get(由于同属于Tiger类的内部,所以可创建ZoOTiger私有类的对象ZooTigerzt=newZooTiger();/返回字符串,内容为私有成员JSChinaIiger的值和ZoOTiger的对象的Ilame值retu

23、rnthis._ischinatiger+(+zt.name+”),;)56 privateclassZooTiger57 58 internalsiringname;59 internalZooTiger()60 61 this.name=动物园的老虎”;62 )63 )64 2. PrOteCted修饰符protected修饰符用于设置类或类成员的访问权限仅为所属类及子类的内部。本例通过对类的私有成员及私有类的访问,展示PriVate修饰符的保护年用。在ChOl目录下新建一个程序文件,并命名为MOdPrOteCted.cs,编写代码如程序1.4所示。程序1.4protected修饰符示例:

24、ModProtected.csOlusingSystem;0203classModProtected0405staticvoidMain(Stringargs)0607COnSole.WriteLine(”请输入所需创建老虎对象的品种(如东北虎、华南虎、孟加拉虎等):”);08stringinput=Console.ReadLine();读取用户输入,并存储于input变量09stringnm,tp;10if(input!二”华南虎”)如果input变量存储的不是”华南虎“字符串12131415161718192021222324252627282930313233343536Tigertg=

25、newTiger(input);/创建Tiger类的对象,并传递input变量的值nm=tg.name;将tg对象的name属性赋值给nm变量tp=tg.type;将tg对象的IyPe属性赋值给tp变量)else(ChinaTigertg=newChinaTigerO;创建ChinaTiger类的对象将tg对象的name属性(继承于父类中声明为PrOteCted的属性)赋值给nm变量nm=tg.name;将tg对象的IyPe属性(继承于父类中声明为PrOteCted的属性)赋值给tp变量tp=tg.type;IConsole.WriteLine(un一只0创建成功!,nm);COnSOIe.W

26、riieLine(这只0的品种是:1u,nm,lp);)classTiger虎类名称(protectedstring_name=老虎;protectedstring_type;/品种internalTiger()无参数构造函数37internalTiger(stringt)/构造函数,直接给品种赋值38(39this._type=t;4041internalstringname/name变量,get访问器获取返回值4243get44(45returnthis._name;/返回字符串,内容为私有成员Jame的值46)4748internalstringtype/type变量,get和Ser访问

27、器获取返回值或写入值49(50get51(52returnthis._type;返回字符串,内容为私有成员ype的值53)54set55(56this._type=value;/为私有成员ype赋值575859)60classChinaTiger:Tiger华南虎类名称62 internalChinaTigerO/构造函数,直接给品种赋值63 64 this._type=华南虎”;直接赋值“华南虎”字符串给父类中继承的ype属性65 )66 )3. internal修饰符internal修饰符修饰的类或类成员的访问权限为同一程序集内部,C#默认的类访问修饰符即为internal。前面两个示例中

28、,需要供类外部代码访问的成员都使用了internal修饰符,因为这些类都处于同一程序集中。4. PUbliC修饰符PUbIiC修饰符则为公共访问权限,对代码的访问没有任何限制。大多数情况下须谨慎使用PUbliC修饰符,因为滥用将影响类的封装性,并且带来安全隐患。以下为代码的运行结果:(1)在命令行下编译ModPriVate.cs后,执行ModPriVate程序,其效果如图1.5所示。从本例代码中可知,ZooTiger类无法在类的外部直接访问,所有的私有成员只能在类的内部访问,本例采用了get访问器访问了小狗和老虎的品种,并创建了ZOOTiger私有类的对象。有的读者可能会迷惑,如果同时使用ge

29、t和Ser访问器PriVate,修饰符意义何在?其实很多程序中确实有这样的做法,这样做向类的外部屏蔽了私有成员的实现方法,同时也隐藏了私有成员的实际名称,有利于封装性。例如本例g,et访问器中有两步操作,而外界无法获知。图1.5PriVate修饰符示例(2)在命令行下编译ModProteCted.cs后,执行MOdPrOteCted程序,其效果如图1.6所示。I区管理员VizSfdiO命令提示(2010)F:ch01cscModPvotected.esHicrosoftUisualCB2010编译器4.0.30319.1版版权所有4CMicrosoftCorporation,保留所有权利。F:

30、ch01ModProtected请匾么所需创建老虎对象的品种(如东北虎、华南虎、孟加拉虎等):华南虎a三三i;i虎F:ch011I图1.6PrOteCted修饰符示例本例接收用户的输入,当输入值为“华南虎时,创建ChinaTiger类的对象,并通过构造函数赋值“华南虎字符串给ype字段。JyPe字段声明中使用了ProteCted修饰符,所以在Tiger类的子类(ChinaTiger突)中可被直接访问。注意:即使派生类和基类在不同程序集中,派生类仍可访问基类的PrOteCted修饰符成员。读者必须清楚的一点是,派生类继承了所有基类的成员,只是无法直接访问基类的PriVate修饰符成员,但可访问P

31、rOteCted修饰符成员。【分析】面向对象编程的特征之一就是封装性,而类就是封装性的典型体现。在生活中,人们不需要知道电器的内部构造,但是能很容易地使用电器,这就是封装性。在项目中需要编写很多功能类,在程序运行时只需要使用类所提供的功能,大部分类内部的代码实现需要封装,拒绝外部访问。这样大大增加了类的内部代码安全性和稳定性,同时多个功能类之间也减少了互相干扰的可能。访问权限修饰符即可将类及类的成员划分多种安全级别,根据不同需要设置访问权限。inlemal和PUbliC访问修饰符是需要谨慎选择的,多数情况下应该尽量使用inlemal访问修饰符。还有一种访问修饰符,即PrOteCledinter

32、nal修饰符,可在子类中或同一程序集内被访问。如果要声明成员只能被同一程序集内的派生类(子类)访问,则应首先设置所属类为internal,成员设置为PrOteCted。面试题4举例说明属性、get和Set访问器的使用【考点】对属性(Property)的理解,C#中get和Set访问器的编写方法,理解自动实现的属性。【出现频率】【解答】本例通过属性操作类中声明的私有字段_username,请注意在Name属性的get和Set访问器中的逻辑操作。本例还有一个自动实现的属性,可读取用户输入的数据。在ChOl目录下新建一个程序文件,并命名为GetSet.cs,编写代码如程序1.5所示。程序1.5属性示

33、例:GetSet.cs01usingSystem;0203classGetSet0405staticvoidMain(Stringargs)06(07COnSOIe.Write(”请输入用户名:,);08Detaildt=newDetail();创建DetaiI的对象09dt.Name=Console.ReadLine();10 ConSole.WriieLineCName属性写入完成!”);11 ConSOIe.WriieLine(n您的用户名为0(读取Name属性),dt.Name);12 COnSOIe.Write(n请输入密码:);13 dt.Password=Console.Read

34、Line();14 ConSOIe.WriteLine(Password属性写入完成!”);15 COnSoIe.WriteLine(n您的密码为0(读取PaSSWord属性),dt.Password);16 17 18 classDetailprivatestring_username;internalstringName(get(从Jisemame值的第6位开始截取并返回(字符串索引值从0开始)return_username.Substring(5);)set(_usemame=user+value;/在传入值前面加上user-)internalstringPasswordPaSSWord

35、属性内部为自动属性实现(get;set;20212223242526272829303132333435363738在命令行下编译GetSet.cs后,执行GetSet程序,其效果如图1.7所示。图1.7属性示例本例中,首先创建Detail类的对象出,将用户第1次输入数据赋值给出对象的Name属性。在Name属性的Set访问器中,用户输入的字符串前面拼接了“user.字句串,然后赋值给Username字段。当读取Name属性时,get访问器将_username字段的值执行SUbString(5)方法,将“user字符串去掉后返回。从整个过程来看,用户无法知道属性中数据经过了什么处理及数据最终存

36、储在何处。而用户输入第2次数据,其值被写入PaSSWOrd属性,自动属性实现可将值写入匿名后备字段,读取时亦可直接返回其值。说明:本例仅展示了get和Set访问器在属性中的使用,在索引器中使用方法是一样的。【分析】在前面的例子中使用了get和Set访问器,通过访问器可以很方便地访问私有成员。其对外部暴露的部分可以为属性或索引器,属性比较常用。类体中的属性(ProPerty)在使用时和一般的类成员没有区别,只是在内部实现的方法通过get和Set访问器完成,这样更灵活、更隐蔽、更安全。其编写格式如以下代码所示:访问修饰符数据类型属性名称get访问修饰符2相关数据操作;访问修饰符3set和VaIUe

37、关键字有关的数据操作;当直接读取属性名称时,将会使用get访问器,执行”相关数据操作”的内容,相当于执行一个返回值为“数据类型的方法。当直接赋值给属性名称时,被赋予的新值将替换隐式参数VaIUe,执行相关的数据操作。从代码中可知,get或Set可添加访问修饰符,不过必须在get和Set同时存在的情况下,且不能同时添加。当没有Set访问器时,代表该属性为只读。最常用的数据操作是读取和写入类中的私有字段(被称为后备字段),如果get和Set访问器中不需要逻辑,仅仅通过属性完成赋值和写入值的功能,可以使用自动实现的属性。自动实现的属性可以提供比较简洁的格式,并且编译器将自动创建一个匿名后备字段(在类

38、体中没有声明),其编写方法如以下代码所示:访问修饰符数据类型属性名称get;set访问修饰符数据类型属性名称get;PriVateset第1种自动实现的属性可直接读取和写入,使用者并不知道数据读取或写入了哪个字段(匿名后备字段)。第2种自动实现的属性为只读,无法写入。注意:属性提供了比较灵活的数据访问方法,读者编写代码时注意显式声明的Set访问修饰符必须比属性修饰符更严格。gel或Set没有显式访问修饰符时,其默认访问限制和属性一致。面试题5描述Sealed修饰符的使用【考点】SeaIed修饰符的意义,密封类和抽象类的关系,sealed修饰符的用法。【出现频率】【解答】在ChOl目录下新建一个

39、程序文件,并命名为Sealed.cs,编写代码如程序1.6所示。程序1.6SeaIed修饰符示例:Sealed.cs01usingSystem;0203classSealedstaticvoidMain(Stringargs)COnSoIe.WriteLine(请输入电脑CPU的名称:”);stringc=Console.ReadLine();ComputerIenovo=newComputer(c);创建电脑对象COnSOIe.WriteLine(nO所采用的CPU为1”,lenovo.name,lenovo.cpu);Phonenokia=newPhone();创建手机对象nokia.di

40、splay();调用重写后的密封方法display。)classProduct(internalstringname;internalvirtualvoiddisplay()(ConSOle.WriieLine(这是产品类的方法!”);1sealedclassComputeriProduct/声明电脑类,继承于PrOdUCt类(internalstringcpu;internalComputer(stringc)(this.cpu=c;05060708091011121314151617181920212223242526272829this.name=电脑”;30 31 )32 *33 cl

41、assNoteBook:Computer34 35 36 *声明本类将导致错误,因为COmPUter类为密封类,无法被继承37 */38 classPhone:Product声明手机类,继承于PrOdUCl类39 40 internalsealedoverridevoiddisplay()41 42 ConSole.WriteLineCn这是手机类的方法!”);43 44 )45 classPhone3G:Phone声明手机类,继承于ProdUCl类46 47 *intemaloverridevoiddisplay()48 49 COnSoIe.WriteLineCn这是3G手机类的方法!);

42、50 51 *声明此方法将导致错误,由于display方法在其父类Phone中为密封方法,所以无法再重写52 */53 )在命令行下编译SeaIed.cs后,执行Sealed程序,其效果如图1.8所示。图1.8SeaIed修饰符示例从本例代码中可知,密封类一般情况下的使用方法和其他类一样,只是无法被继承。代码中PrOdUCt类的虚方法display方法被Phone类重写,而被重写的display方法前面也加了sealed修饰符。在这种情况下,密封的display方法无法被所属类的子类继续重写,如本例代码中的PhOne3G类,无法重写display方法。说明:密封类可用于单一功能的实现,并且防止

43、被意外地继承,产生非预期的效果,这也是封装性的体现。【分析】Sealed修饰符用于修饰类、实例方法和属性。Sealed用于修饰类时,该类无法被继承,所以该类也被称为密封类。而abstract类(抽象类)必须被继承才有意义,所以,sealed修饰符和abstract修饰符是互相排斥的,无法共存。密封方法会重写基类的方法,sealed用于修饰实例被重写的虚方法或虚属性时,表示该方法或属性无法再被重写。注意:SeaIed修饰实例方法或属性时,必须和OVeITide一起使用。面试题6请简述静态类和静态类成员【考点】静态类和静态类成员的理解,StatiC在应用中的特殊性。【出现频率】【解答】在ChOl目录下新建一个程序文件,并命名为StatiC.cs,编写代码如程序1.7所示。程序1.7静态类及静态类成员示例:Static.csOlusingSystem;0203classStatic04)05staticvoidMain()0607COnSOle.Write(”请输入电脑的CPU和内存规格,用英文逗号分隔:”);08stringinput=Console.ReadLine();获取用户输入值并赋值给input变量09intpos=input.lndexf(,);获取inpu

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号