01:在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。
答:string str=null是不给他分配内存空间,而string str=“”给它分配长度为空字符串的内存空间.
02:简述类和结构的相同点和不同点。并用代码举例。
答:C中的结果仅仅就是一个结构体,C++中类含有面向对象的思想,具有继承、重载、多态等特性。
03:什么是拆箱和装箱?举例说明
答:从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱
04:编程实现一个冒泡排序
05:编程实现一个递归方法
06:说说目前学的集合有哪些?,每一种集合的特点以及使用场景
答:(1)ArrayList是List接口的可变数组非同步实现,并允许包括null在内的所有元素,相当于List < object>
(2)List < T >泛型的List 类是一个不限长度的集合类型,它内部实际就是一个数组,初始长度是4,
每次数组到达限制,就会把现有容量翻倍,它提供用于对集合进行搜索、排序和操作等方法
List是数组链表,数组链表访问快,复杂度O(1),但是添加删除复杂度O(n)
(3)Dictionary<TKey, TValue> 泛型强类型字典,表示键值对的集合,使用键访问,内部是哈希表实现
(4)Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对
基本概念:
Hashtable使用了闭散列法来解决冲突,它通过一个结构体bucket来表示哈希表中的单个元素,这个结构体中有三个成员:
(1) key :表示键,即哈希表中的关键字。
(2) val :表示值,即跟关键字所对应值。
(3) hash_coll :它是一个int类型,用于表示键所对应的哈希码。
哈希表的所有元素存放于一个名称为buckets(又称为数据桶)的bucket数组之中
07:变量被标记为 “const” 和readonly” 有何不同?
答:const:一但赋了值就不能再更改,字段只能在该字段的声明中初始化;
readonly:只读属性,一但定义便不能更改,只能阅读,字段可以在声明或构造函数中初始化
08:“out” 和 “ref” 参数有何不同?用代码举例
概述:
ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。
out 关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字。
同:
1、都能返回多个返回值。
2、若要使用 ref 和out参数,则方法定义和调用方法都必须显式使用 ref和out 关键字。在方法中对参数的设置和改变将会直接影响函数调用之处(参数的初始值)。
异:
1、ref指定的参数在函数调用时候必须初始化,不能为空的引用。而out指定的参数在函数调用时候可以不初始化;
2、out指定的参数在进入函数时会清空自己,必须在函数内部赋初值。而ref指定的参数不需要。
口诀:
ref有进有出,out只出不进。
运行结果为
x=521,y=520
09:“StringBuilder” 和 “String” 有何不同?
答:String可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了存储数值不可改变的字符串。
StringBuilder是线程不安全的,运行效率高,如果一个字符串变量是在方法里面定义,这种情况只可能有一个线程
访问它,不存在不安全的因素了,则用StringBuilder。如果要在类里面定义成员变量,并且这个类的实例对象会在
多线程环境下使用或者变量的内容不断变化,那么最好用StringBuffer。