c#复习(综合问答)

1. 结构体的使用场合,以及结构体和类的区别

使用场合:

目标类型只是含有一些数据 或以数据为主;

没有抽象和多级别的对象层次

区别:

结构体是值类型,类是引用类型

结构体不能实例属性或字段的初始值

结构体不能声明默认的构造函数

结构体不支持继承

2. 写出5个值类型,和5个引用类型

值类型:

int float double 结构体struct long

引用类型:

class interface delegate object string 各容器

3. 写出4个访问权限修饰符以及它们的含义

public - 公有的 访问不受限制

internal - 内部的 访问仅限于当前程序集,只有当前工程可以访问

protected - 受保护的 访问仅限于当前类或其派生类

private - 私有的 访问仅限于当前类

protected internal - 内部保护访问。只限于本项目或是子类访问,其他不能访问

4. 什么是装箱,什么是拆箱

装箱:值->引用

拆箱:引用 -> 值

5. 简述静态类的特点

静态类中只能有静态成员,不可以有非静态字段

静态类不能被实例化

静态类在整个项目中,资源共享

在程序结束后,静态资源才会被释放

6. 简述构造函数的特点

创建类的新对象时执行

构造函数的名称与类的名称完全相同

无函数(返回)类型说明, 也没有返回值

可以被重载

7. 抽象类和接口的相同点

都可以被继承

都不能被实例化

都可以包含方法声明

派生类必须实现未实现的方法

8. 抽象类和接口的区别

抽象基类可以定义字段、属性、方法实现。接口只能定义属性、索引器、事件、和方法声明,不能包含字段

抽象类适用于同一系列,并且有需要继承的成员。接口适用于不同系列的类,让其具有相同的行为,这个就考虑使用接口

接口解决了类不能多继承问题,一个类只能继承自一个类(抽象类),但是可以同时实现多个接口

接口类中不能有实现成员,而抽象类中可以有未实现成员也可以有实现的成员

接口中未实现的方法必须在子类中[实现],抽象类中未实现的方法必须在子类中[重写]

接口可以作用于值类型(struct)和引用类型,抽象类只能作用于引用类型

9. 简述队列、栈和链表的特点

先进先出

后进先出

通过指针指向下一个节点,内存不连续

10. 

a) 通过下标访问数组元素的时间复杂度是?

O(1)

b) 遍历数组查找元素的时间复杂度是?

O(n)

c) 简述在数组中插入元素的最好和最坏情况,以及它们的时间复杂度

插在开头 O(n)

插在末尾 O(1)

11. 简述重载(overload)和重写(override)的区别

静态多态,相同函数名参数类型或者个数不同;

动态多态,重写基类的函数,在子类中有不同实现。

12. 简述委托和事件的定义

可以将方法当作另一个方法的参数来进行传递

一个进行封装的委托类型变量

13. 如何手动释放堆区内存?

将引用类型对象赋值null

手动调用GC

14. 请补完以下单例模式的类

public class Single{

private static Single Instance;

private Single () { }

public static Single Instance

        {

            get

            {

                if (instance == null)

                {

                    instance = new Single ();

                }

                return instance;

            }

        }

}

15. 请简述一下快速排序的逻辑

未完待续...

上一篇:C#命名规范


下一篇:halcon联合c#做到带涂抹功能的模板匹配