2018年9月28日.NET笔试面试题

接口和抽象类该如何取舍

解答

接口和抽象类非常相似,两者都无法实例化,并且未实现部分都由派生类实现。

接口与抽象类的主要区别有以下几点

  1. 抽象类只能派生类,而接口可以派生类和结构。
  2. 抽象类的派生类也可以是抽象类,即抽象成员在派生类中不一定被完全实现。而接口要求其派生类或结构必须完全实现其成员。
  3. 抽象类可以包含己经实现的成员,可以包含字段,而接口只包含未实现的成员,不能包含字段。并且接口及所含成员必须为public访问级别。
  4. 类只能继承一个抽象类,但可以继承(实现)多个接口。

在具体的程序设计中,抽象类和接口的取舍应视程序的需要而定。

  • 抽象类可以用于归纳一组相似的、有共同特性的类,然后将这些类共同的成员提取到抽象类中,使抽象类作为这组类的基类。
  • 这样做到了代码的复用,不但节约了代码量,也减轻了维护的复杂度,然后将这组类中相似的方法或属性提取到抽象类中,成为抽象类的抽象成员,不提供具体实现,由这组类自己完成不同的实现。

说明:抽象类的应用非常类似于网页制作中的CSS外部样式文件、大量风格相同的页面可以共用这个CSS文件,并且在页面中可以对部分CSS属性进行改写。

  • 接口是一组类的功能集合,也可以说是一组类的协定集合,这组类负责实现这些功能,可以说接口内含的成员都是抽象的。
  • 类可以实现多个接口,这样可将意图和实现分离,接口可以暴露给其他程序直接使用,并且可以很方便地进行功能的扩展。

分析

  • 抽象类是一种用abstract关键字修饰的类,这种类仅用于被继承。类似于接口,抽象类无法创建实例,而类体可以声明多个未实现的抽象成员,这些成员由继承此类的派生类实现。
  • 抽象类的类体中可包含实现的成员,而未实现的成员为抽象成员。
  • 抽象方法或属性本身就是隐性的virtual,所以派生类实现抽象方法或属性必须使用override关键字。
  • 继承抽象类的类如果没有完全实现抽象成员,仍然只能是抽象类,即派生的非抽象类必须完全实现抽象成员。
  • 抽象类也可以实现接口,这时抽象类必须实现所有的接口成员,也可以将继承的接口成员映射至抽象成员,并由其派生类来实现。

说明:抽象类的成员不能使用virtaulstatic修饰。


简述C#变量的隐式类型声明

解答

  • C#提供了var关键字,用于隐式声明局部变量的数据类型,由编译器根据初始值推测具体的数据类型。
  • var声明的变量是局部变量,只能用于声明方法或属性的变量声明,而且声明时必须对变量赋予非null的初始值。

分析

  • C#中声明变量的方法和其他编程语言类似,一般需要声明其数据类型,完成变量的初始化工作。
  • 在C#中,提供了var关键字以代替数据类型声明,编译器将在变量被赋初始值后判断其数据类型,并完成初始化的工作。
  • 这种方法有点类似弱类型编程语言的变量声明方法。

如,JavaScript这些弱类型语言声明一个变量后,允许在作用域内存储不同数据类型的值。而C#是强类型语言,即便使用了var关键字同样没有质的变化,只是当编译器遇到var时,将根据初始值推测出相应的数据类型设置为该变量的类型,如果在作用域内给变量赋予有别于这个数据类型的新值,则会产生编译错误。

  • C#提供var关键字在一定程度上方便了编程者的变量声明,不过为了程序的可读性、可维护性,var关键字不宜滥用。

简要地谈谈分部类型和分部方法

解答

  • 在.NET程序开发中,集成开发环境经常自动生成大量类的代码,而编程者也要手工编写该类的代码。为了分离相同类的代码,C#提供了partial关键字可将同一个类型编写于多个文件中,这种类型被称为分部类型。
  • 在C#中,可以使用partial关键字定义分部方法,其目的和分部类型类似,不过分部方法所受限制更多。

分析

  • C#很早就提供了partial关键字,中文意思是局部的、部分的,该关键字主要用于修饰类型。
  • 在程序开发中,类型一般需定义在一个文件中,当类体的内容过多时影响其可读性、可维护性。而partial修饰的类型(即分部类型)允许在多个文件中编写同一个类的类体,只是在编译后才成为一个不可分的类型。
  • 分部类型的出现可将复杂的类型分离为多个部分,极大地方便了团体合作项目的便利性,同时也有利于相同类中集成开发环境自动生成的代码和用户编写的代码分开存储。
  • C#中也提供了分部方法,即将partial关键字用于修饰类中的方法。

虽然分部方法的概念和分部类型的概念有很多相似之处,但有其特殊性,不可任意定义,须遵从以下限制

  1. 分部方法可以是静态方法,但必须是隐式的私有方法,并且是无返回值的方法。
    说明:由于分部方法是私有方法,所以无法使用virtual修饰符,即不能成为虚方法。)
  2. 分部方法只能将方法分为两部分,即声明部分和实现部分。
  3. 分部方法只用于分部类型,方法的声明部分和实现部分可位于分部类型的不同部分。
  4. 分部方法可以有ref参数,但不能有out参数。
  5. 不允许将委托转换为分部方法。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,101评论 1 32
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,631评论 18 399
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,104评论 0 62
  • 人生路漫漫,恐惧、孤独无处不在。 父母教会我们求生的技能,我们必须不断强大起来,因为他们不能保护我们一辈子,他们会...
    我们都不过是过客罢了阅读 828评论 0 0
  • 听说如果你现在过的不快乐,那么你就会怀念以前的生活,可能现在的日子确实不是我想要的那种以后。 毕业还不到...
    伊筱葵阅读 1,203评论 14 7