Unity考试题

C#题型

  1. 结构体和类有何区别?

    结构体是一种值类型,而类是引用类型。那么结构体就是当成值来使用的,类则通过引用来对实际数据操作

  2. 值类型和引用类型有何区别?

    (1)值类型的数据存储在内存的栈中;引用类型的数据存储在内存的堆中,引用类型的变量持有的是数据的引用,

    (2)值类型存取速度快,引用类型存取速度慢。

    (3)值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针或引用

    (4)值类型继承自System.ValueType,引用类型继承自System.Object

    (5)栈的内存分配是自动释放;而堆在.NET中会有GC来释放

    (6)值类型的变量直接存放实际的数据,而引用类型的变量存放的则是数据的地址,即对象的引用。

  3. Heap与Stack有何区别?

    (1)heap是堆,stack是栈。

    (2)stack的空间由操作系统自动分配和释放,heap的空间是手动申请和释放的,heap常用new关键字来分配。

    (3)stack空间有限,heap的空间是很大的自由区。

  4. 请简述ArrayList和List的主要区别?

    List是接口,ArrayList是一个实现了该接口的类,可以被实例化

    ArrayList存在不安全类型(ArrayList会把所有插入其中的数据都当做Object来处理)

  5. 请简述装箱拆箱

    装箱 就是把“值类型”转换成“引用类型”(Object);

    拆箱 就是把“引用类型”转换成“值类型”;

  6. 请简述sealed关键字用在类声明时与函数声明时的作用

    sealed修饰的类为密封类,类声明时可防止其他类继承此类,在方法中声明则可防止派生类重写此方法。

  7. 请简述private,public,protected,internal的区别

    public:对任何类和成员都公开,无限制访问

    private:仅对该类公开

    protected:对该类和其派生类公开

    internal:只能在包含该类的程序集中访问该类

  8. 请描述Interface与抽象类之间的不同

    都可以被继承

    都不能被实例化

    都可以包含方法声明

    抽象类是部分抽象,单继承,接口是完全抽象,多继承。

  9. ref参数和out参数是什么?有什么区别?

    ref引用参数和out输出参数的效果一样,都是通过关键字找到内存地址,

    不同点就是输出参数必须对参数进行初始化。

  10. C#的委托和事件

    委托(delegate)类似于一种安全的指针引用,委托可以把一个方法作为参数代入另一个方法。 委托可以理解为指向一个函数的引用。事件是一种特殊的委托