01:在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。
string str= " ",表示一个空串,被实列化了,占用了内存空间,
string str=null,表示一个空引用,没有占用了空间,
02:简述类和结构的相同点和不同点。并用代码举例。
类是引用类型,结构是值类型。
在结构中可以声明字段,但是声明字段的时候是不能给初始值的。
struct Student
{
private string name;
}
类只能在声明声明字段时给初始值,声明后不能再初始值。
class Student
{
private string name=“张三”;
}
03:什么是拆箱和装箱?举例说明
装箱 就是把值类型转换成引用类型;
//装箱
int i = 3 ;
object o = i ;//隐式装箱操作,int i 在堆上
object b = (object)i ; //显示装箱操作
拆箱 就是把引用类型转换成值类型;
//拆箱
int j = (int) o ;//显示拆箱(将对象o拆箱为int类型)
int k = b ;//不能隐式拆箱
04:编程实现一个冒泡排序
int temp = 0;
int[] arr = {23, 44, 66, 76, 98, 11, 3, 9, 7};
for (int i = 0; i < arr.Length - 1; i++)
{
for (int j = 0; j < arr.Length - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
05:编程实现一个递归方法
public int jiecheng(int i)
{
if (i == 1)//函数停止继续调用的条件,函数的出口
{
return i;
}
int sum = i * jiecheng(i-1);
//i=5
//int sum = 5*jiecheng(4);
//int sum = 5*(4*jiecheng(3));
//int sum = 5*(4*(3*jiecheng(2)));
//int sum = 5*(4*(3*(2*jiecheng(1))));
//int sum = 5*(4*(3*(2*1)));
return sum;
}
06:说说目前学的集合有哪些?,每一种集合的特点以及使用场景
(1)ArrayList:其主要应用在当需要进行存储的数据中有多种类型,同时程序也不是太计较性能的得失,因为其要进行装箱和拆箱操作,这个操作非常消耗性能
(2)Hashtable:可以针对这种情况解决问题,它为每个元素都取了一个有意义并且唯一的关键字,然后通过关键字来访问元素。Hashtable的数据是通过(key)键和值(value)来组织的,所以也叫"字典"。
(3)List:设计的程序类型相对要较安全,并且性能要相对较高
(4)字典对象(Dictionary):一般作为聚合统计或者快速使用特征访问
07:变量被标记为 “const” 和readonly” 有何不同?
(1)const修饰的常量在声明的时候必须初始化;readonly修饰的常量则可以延迟到构造函数初始化
(2)const修饰的常量在编译期间就被解析,即常量值被替换成初始化的值;readonly修饰的常量则延迟到运行的时候
(3)const修饰的常量注重的是效率;readonly修饰的常量注重灵活
(4)const修饰的常量没有内存消耗;readonly因为需要保存常量,所以有内存消耗
(5)const只能修饰基元类型、枚举类、或者字符串类型;readonly却没有这个限制
08:“out” 和 “ref” 参数有何不同?用代码举例
ref参数的变量必须给初始值
static void Main()
{
int val = 0;
Method(ref val);
}
static void Method(ref int i)
{
i = i+1;
}
out参数的变量不能给初值
当希望方法返回多个值时,声明 out 方法非常有用。使用 out 参数的方法仍然可以返回一个值。一个方法可以有一个以上的 out 参数。
static void Main()
{
int value;
Method(out value);
}
static void Method(out int i)
{
i=10;
}
09:“StringBuilder” 和 “String” 有何不同?
string连接字符串,会在内存中重新分配地址。把字符串的内存地址指向新的内存地址。
StringBuilder连接字符串系统是不会再分配内存空间的。
StringBuilder不需要每次都去分配内存空间。所以系统就没有必要去处理垃圾;
当我们需要多次的对一个字符串进行多次操作的时候,StringBuilder的效率要远远高与string`