01:在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。
1.""分配了内存;null没有分配内存。
2.""是一个字符串(String).它在内存中是存在的.而null它是一个空对象.在内存中是不存在的。
3.""占内存,在内存中会分配一个空间。null不占内存. 为空引用.
02:简述类和结构的相同点和不同点。并用代码举例。
//类
class Person
{
private string name;
private int age;
public void SayHi()
{
Console.WriteLine("Hello,My Name is "+this.name+",My Age is "+this.age);
}
}
//结构
struct Rectangle
{
private int width;
private int height;
public int GetArea()
{
return this.width * height;
}
}
1.类型不同:结构是一种值类型,而类是引用类型。值类型用于存储数据的值,引用类型用于存储对实际数据的引用。那么结构体就是当成值来使用的,类则通过引用来对实际数据操作。
2.存储不同:结构使用栈存储,而类使用堆存储。栈的空间相对较小.但是存储在栈中的数据访问效率相对较高.堆的空间相对较大.但是存储在堆中的数据的访问效率相对较低。
3.作用不同:类是反映现实事物的一种抽象,而结构体的作用只是一种包含了具体不同类别数据的一种包装,结构体不具备类的继承多态特性。
4.关键字不同:在类中可以使用但是在结构中限制使用的关键字有:abstract、sealed、protected;StaTIc关键字可以用在类名前面用来声明静态类,但是不能用在struct前面,不存在静态结构。
5.初始化不同:类可以在声明的时候初始化,结构不能在申明的时候初始化(不能在结构中初始化字段),否则报错。
03:什么是拆箱和装箱?举例说明
int i=123;
object 0=i; //装箱
int j=(int)o;//拆箱
将值类型转换为引用类型的过程称为装箱,反之称为拆箱
04:编程实现一个冒泡排序
int main()
{
int nums[10] = {4, 5, 2, 10, 7, 1, 8, 3, 6, 9};
int i, j, temp, isSorted;
for(i=0; i<10-1; i++)
{
isSorted = 1;
for(j=0; j<10-1-i; j++)
{
if(nums[j] > nums[j+1])
{
temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
isSorted = 0;
}
}
if(isSorted) break;
for(i=0; i<10; i++){
printf("%d ", nums[i]);
}
printf("\n");
return 0;
}
05:编程实现一个递归方法
double fab(int n)
{
if(n == 0 || n == 1){
return 1;
}else{
return n*fab(n-1);
}
}
06:说说目前学的集合有哪些?,每一种集合的特点以及使用场景
ArrayList,HashTable,List<T>,Dictionary<K,V>
为了建立一个动态的"数组",引入了非泛型ArrayList。
为了建立一个"字典",引入了非泛型HashTable。
为了建立一个动态的类型安全的"数组",引入了泛型List<T>。
为了建立一个类型安全的"字典",引入了泛型Dictionary<object,object>。
07:变量被标记为 “const” 和readonly” 有何不同?
const修饰的常量在声明的时候必须初始化;readonly修饰的常量则可以延迟到构造函数初始化 ;const 只读 但不能修改,readonly 只读可修改
08:“out” 和 “ref” 参数有何不同?用代码举例
ref是引用把值类型转换成弓用,out是输出,区别是ref是输入兼输出的,out只是单纯的输出
public void num(ref int num1, ref int num2){ }
public void num(out int num1, out int num2){ }
09:“StringBuilder” 和 “String” 有何不同?
用string += 追加的时候会分配新的地址,StringBuilder不会 ,所以StringBuilder的运行速度会快,不会浪费资源空间。