01:在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。
string str= " ",表示一个空串,被实列化了,占用了内存空间,
string str=null,表示一个空引用,没有占用了空间,
02:简述类和结构的相同点和不同点。并用代码举例。
1.关键字不同 一个是class,一个是struct 2.类型不同,一个是引用类型,一个是值类型(一个堆区,一个栈区)
2.成员不同,结构体没有默认的构造函数(可以添加)和没有析构函数,不可以使用abstract,protected,sealed修饰
结构: 类:
访问修饰符 struct 结构名 访问修饰符 class 类名
{ {
//结构体 //代码块
}
03:什么是拆箱和装箱?举例说明
1.拆箱是把"引用类型"转换成“值”类型;
2.装箱是把“值类型”转换成“引用类型”;
int i=10; object o=i;(装) int c=(int)o;(拆)
04:编程实现一个冒泡排序
int[] num = { 8,11 ,9 , 18 ,14};
for (int i = 0; i < num.Length; i++)
{
for (int j = i+1; j < num.Length; j++)
{
if (num[i]>num[j])
{
int item = num[i];
num[i] = num[j];
num[j] =item;
}
}
05:编程实现一个递归方法
public int Num(int shu)
{
if (shu == 2 || shu == 3){
return shu;
} else{
return Num(shu - 1) + Num(shu - 2);
}
}
06:说说目前学的集合有哪些?,每一种集合的特点以及使用场景
1.ArrayList arraylist=new ArrayList();
特点:集合添加的值都会进行装箱处理,应为ArrayList只能添加object类型,取值的时候需要进行类型转换
2.List<string> list=new List<string>
特点:新增数据需要进行类型安全验证,获取数据的时候不用去强转
3.Hashtable hashtable = new Hashtable();
特点:存储的是键值对集合,一个空间放两个值(key,value),获取数据是不能通过下标取值,所以它只能通过foreach遍历数据,新增数据不用进行类型安全验证
4.Dictionary<int, string> pairs = new Dictionary<int, string>();
特点:存储的是键值对集合,一个空间放两个值(key,value),并且要进行类型安全验证,取值和Hashtable一样
07:变量被标记为 “const” 和readonly” 有何不同?
1.const 一个包含不能修改的值的变量,readonly 允许把一个字段设置成常量
2. const 默认就是静态的,而 readonly 如果设置成静态的就必须显示声明。
3.4.const 对于引用类型的常数,可能的值只能是 string 和 null,readonly可以是任何类型
08:“out” 和 “ref” 参数有何不同?用代码举例
1、ref传进去的参数必须在调用前初始化,out不必,即:
int num;
SomeMethod( ref num );//语法错误
SomeMethod( out num );//通过
2、ref传进去的参数在函数内部可以直接使用,而out不可:
public void SomeMethod(ref int num)
{
int shu=num;//通过
//...
}
public void SomeMethod(out int num)
{
int shu=num;//语法错误
}
09:“StringBuilder” 和 “String” 有何不同?
1. string 对象时恒定不变的,stringBuider对象表示的字符串是可变的。stringBuilder是.net提供的动态创建string的高效方式,以克服string对象恒定性带来的性能影响。