01:在C#中,string str = null 与 string str = “” 请尽量使用文字或图
象说明其中的区别。
答:第一个 str赋值的是null 赋值了null 但没有开辟空间,在第二个str赋值的是“ ” 它赋值了也开辟了新的空间
02:简述类和结构的相同点和不同点。并用代码举例。
public class Class1
{
public int Show1(out int num1)
{
num1 = 10;
return num1;
}
public int Show2(ref int num2)
{
return num2;
}
}
答:结构不可以new 不可以包含方法 只能包含变量 结构是值类型 结构不能定义无参数的构造方法。类可以new 可以有方法 类是引用类型。
03:什么是拆箱和装箱?举例说明
答:
装箱:将值类型包装为引用类型
拆箱:将引用类型转换为值类型
例如
objetct obj = null;
obj = 1; //装箱
int i = (int) obj; //拆箱
04:编程实现一个冒泡排序
int [] array = new int [*] ;
int temp = 0 ;
for (int i = 0 ; i < array.Length - 1 ; i++)
{
for (int j = i + 1 ; j < array.Length ; j++)
{
if (array[j] < array[i])
{
temp = array[i] ;
array[i] = array[j] ;
array[j] = temp ;
}
}
}
05:编程实现一个递归方法
public struct Sum
{
public int Sum(int sum)
{
if (sum==1)
{
return sum;
}
return sum * Sum(sum - 1);
}
}
06:说说目前学的集合有哪些?,每一种集合的特点以及使用场景
答:ArrayList,List,Hashtable,Dictionary<key,value>
ArrayList和List获取,删除元素是通过下标或对象名获取;
Hashtable,和Dictionary<key,value>获取,删除元素是通过key获取。
List和Dictionary<key,value>访问元素无须转换
07:变量被标记为 “const” 和readonly” 有何不同?
答:const修饰的常量在声明的时候必须初始化;readonly修饰的常量则可以延迟到构造函数初始化
const修饰的常量在编译期间就被解析,即常量值被替换成初始化的值;readonly修饰的常量则延迟到运行的时候
08:“out” 和 “ref” 参数有何不同?用代码举例
答:
public void num(ref int num1, ref int num2){ }
public void num(out int num1, out int num2){ }
ref是引用把值类型转换成弓用,out是输出,区别是ref是输入兼输出的,out只是单纯的输出
09:“StringBuilder” 和 “String” 有何不同?
答:String 在进行运算时(如赋值、拼接等)会产生一个新的实例,而 StringBuilder 则不会。
所以在大量字符串拼接或频繁对某一字符串进行操作时最好使用 StringBuilder,不要使用 String
如果要操作一个不断增长的字符串,尽量不用String类,改用StringBuilder类。
两个类的工作原理不同:String类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错。
但是在.NET框架下,这个操作实在是划不来。因为系统先是把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。这一来二去的,耗了不少时间。