C#简答题及解析答案

1、什么是装箱和拆箱? 

装箱是从值类型到引用类型的隐式转换;

拆箱是从引用类型到值类型的显示转换;

2、什么是重载和重写 

Overload:重载就是在同一个类中,方法名相同,参数列表不同。参数列表不同包括:参数的个数不同,参数类型不同等。

override:说的是两个类继承,子类重写父类的方法,在调用的时候,子类的方法会覆盖父类的方法,也就是会调用子类的方法。在父类中的方法必须有修饰符virtual,而在子类的方法中必须指明override。

3、说说抽象方法和虚方法的相同点与不同点。 

抽象方法是只有定义,没有实际方法体的函数,它只能在抽象函数中出现,并且在子类中必须重写;

虚方法则有自己的函数体,已经提供了函数实现,但是允许在子类中重写或覆盖。 

4、接口和抽象类的区别是什么? 

接口中只能声明方法,属性,事件,索引器。不能包含字段、构造函数、析构函数、静态成员或常量。

抽象类中可以有方法的实现,也可以定义非静态的类变量。

抽象类只能被单继承,接口可以实现多个。

抽象类可以提供某些方法的部分实现,接口不可以。

抽象类的实例是它的子类给出的。接口的实例是实现接口的类给出的。

抽象类中加入一个方法,抽象类的子类就同时有了这个方法。

接口中加入新的方法,实现该接口的类需要重新编写。

接口成员被定义为公共的。

抽象类的成员可以是私有的、受保护的、内部的或受保护的内部成员。

接口用于规范。抽象类用于共性。

5、C#用多种修饰符来表达类的不同性质。根据其保护级C#的类有五种不同的限制修饰符,请写出三种并指出它们之间的区别是什么? 

public 可以被任意存取 

protected只可以被本类和其继承子类存取 

internal只可以被本程序集内所有的类存取,其编译后的文件扩展名往往是“.DLL”或“.EXE”。 

protected internal唯一的一种组合限制修饰符,它只可以被本组合体内所有的类和这些类的继承子类所存取。 

private只可以被本类所存取。   

6、类和对象的区别和关系是什么?

类是对象的抽象,它为属于该类的全部对象提供了统一的抽象描述。

类是对象的模板,对象是类的实例

7、静态字段和非静态字段的区别?

静态字段使用static 修饰;非静态不用。

静态字段属于类,为所有对象共用;非静态字段属于对象,为对象专用。

静态字段使用类名来访问;非静态字段使用对象来访问。

8、抽象方法和虚方法的区别?

抽象方法使用abstract修饰,只有定义,没有方法体实现,只能出现在抽象类中,子类必须重写;

虚方法使用virtual修饰,有方法体实现,允许子类重写或覆盖。

9、如何区别重载方法?

在一个类中,方法名字相同,参数不同;包括不同的参数个数,不同的参数类型,不同的参数顺序

10、构造方法有哪些特征?

(1)函数名与类名相同;

(2)没有返回值类型;

(3)系统自动调用

11、简述变量的命名规则

由数字、字母和下划线组成,不能以数字开头,不能是关键字。

12、什么是抽象类和密封类(最好简述一下它们都有什么特点)

抽象类用abstract修饰,能够包含抽象成员。抽象类不能直接实例化,也不能被密封,只能作为其它类的基类。

密封类用sealed修饰,不能用作基类。因此,它也不能是抽象类。密封类主要用于防止派生。

13、解释virtual、sealed、override和abstract的区别

virtual声明虚方法的关键字,说明该方法可以被重写; 

sealed说明该类不可被继承;

override重写基类的方法;

abstract声明抽象类和抽象方法的关键字,抽象方法不提供实现,由子类实现,抽象类不可实例化。

  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是几个常见的C#委托相关的面试题及答案: 1. 什么是委托(Delegate)? 委托是一种类型,它用于封装一个或多个方法,并可以在运行时动态地调用这些方法。委托可以看作是函数指针的一种类型安全和面向对象的替代。 2. 委托有什么作用? 委托可以用于实现事件处理、回调函数、多播委托等。它提供了一种灵活的方式来处理方法的传递和执行。 3. 如何定义一个委托? 可以使用`delegate`关键字定义一个委托类型,如:`delegate void MyDelegate(int x);`。这里定义了一个名为`MyDelegate`的委托类型,它接受一个`int`类型的参数并返回`void`。 4. 如何创建委托实例? 可以使用委托类型的构造函数来创建委托实例,如:`MyDelegate del = new MyDelegate(MyMethod);`。这里将一个方法`MyMethod`赋值给委托实例`del`。 5. 如何调用委托? 可以直接使用委托实例来调用委托所封装的方法,如:`del(10);`。这里调用了委托实例`del`,并将参数`10`传递给委托所封装的方法。 6. 什么是多播委托(Multicast Delegate)? 多播委托是一种特殊的委托,它可以封装多个方法,并按照添加的顺序依次调用这些方法。可以使用`+=`运算符添加方法到多播委托中,使用`-=`运算符从多播委托中移除方法。 7. 委托和接口有什么区别? 委托是一种封装方法的类型,而接口是一种定义行为的类型。委托可以用于封装方法的调用,而接口用于定义类的行为和能力。 以上是一些常见的C#委托相关面试题及答案,希望对你有帮助!记得在面试中展示自己对委托的理解和实际应用能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值