C#初级编程

1:在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别

string str= " ",表示一个空串,被实列化了,占用了内存空间,
string str=null,表示一个空引用,没有占用了空间,

string str=null 把这个引用指向了一个null,没有地址没有值的地方。
string str="" 把这个引用指向了一个地址,地址里面存的是空的字符。

2:简述类和结构的相同点和不同点。并用代码举例。

相同点 :结构可以实现接口,并且可以具有与类相同的成员类型 

不同点: 

(1).类型不同:结构是一种值类型,而类是引用类型。值类型用于存储数据的值,引用类型用于存储对实际数据的引用。那么结构体就是当成值来使用的,类则通过引用来对实际数据操作。

(2).存储不同:结构使用栈存储,而类使用堆存储。栈的空间相对较小.但是存储在栈中的数据访问效率相对较高.堆的空间相对较大.但是存储在堆中的数据的访问效率相对较低。

(3).作用不同:类是反映现实事物的一种抽象,而结构体的作用只是一种包含了具体不同类别数据的一种包装,结构体不具备类的继承多态特性。

(4).关键字不同:在类中可以使用但是在结构中限制使用的关键字有:abstract、sealed、protected;StaTIc关键字可以用在类名前面用来声明静态类,但是不能用在struct前面,不存在静态结构。

(5).初始化不同:类可以在声明的时候初始化,结构不能在申明的时候初始化(不能在结构中初始化字段),否则报错。

3:什么是拆箱和装箱?举例说明

拆箱是把“引用”类型转换成“值”类型;装箱是把“值”类型转换成“引用类型”;

 //装箱
 int num = 1;
 object o = (object)num;
 //拆箱
 object o = 1;
 int num = (int)o;

4:编程实现一个冒泡排序

int[] array = { 2, 3, 1, 5, 6, 7, 9, 8, 0, 4 };
            for (int j = 0; j < array.Length - 1; j++)
            {
                for (int i = 0; i < array.Length - 1 - j; i++)
                {
                    int temp;
                    if (array[i] < array[i + 1])
                    {
                        temp = array[i];
                        array[i] = array[i + 1];
                        array[i + 1] = temp;
                    }
                }
            }

5:编程实现一个递归方法

double fab(int n) 
{
   if(n == 0 || n == 1){ 
     return 1; 
   }else{ 
     return n*fab(n-1); 
   } 
} 

6:说说目前学的集合有哪些?,每一种集合的特点以及使用场景

HashMap     ArrayList     List     Map  

ArrayList,List,Hashtable,Dictionary<key,value>
ArrayList和List获取,删除元素是通过下标或对象名获取;
Hashtable,和Dictionary<key,value>获取,删除元素是通过key获取。
List和Dictionary<key,value>访问元素无须转换。

场景:
ArrayList:应用程序对数据有较多的随机访问

List:

(1) 对于需要快速插入,删除元素,应该使用LinkedList。
(2) 对于需要快速随机访问元素,应该使用ArrayList。
(3) 对于“单线程环境” 或者 “多线程环境,但List仅仅只会被单个线程操作”,此时应该使用非同步的类(如ArrayList)。
       对于“多线程环境,且List可能同时被多个线程操作”,此时,应该使用同步的类(如Vector)。

Hashtable:

(1)某些数据会被高频率查询
(2)数据量大
(3)查询字段包含字符串类型
(4)数据类型不唯一

Dictionary<key,value>:

Dictionary<Key,Value>是一个泛型,它本身有集合的功能有时候可以它看成是数组,它的结构是这样的:Dictionary<[Key],[Value]>,它的特点是存入对象需要与[Key]值一一对应的存入该泛型,通过某一个一定的[Key]去找到对应的值[Key]不能重复。它的单个数组是KeyValuePair<Key,Value>,[Value]可以是string,int 和一个类等等。

7:变量被标记为 “const” 和readonly” 有何不同?

 1)const修饰的常量在声明的时候必须初始化;readonly修饰的常量则可以延迟到构造函数初始化 

 2)const修饰的常量在编译期间就被解析,即常量值被替换成初始化的值;readonly修饰的常量则延迟到运行的时候

     此外const常量既可以声明在类中也可以在函数体内,但是static readonly常量只能声明在类中。

8:“out” 和 “ref” 参数有何不同?用代码举例

ref是引用把值类型转换成弓用,out是输出,区别是ref是输入兼输出的,out只是单纯的输出


public void num(ref int num1, ref int num2){ }
public void num(out int num1, out int num2){ }

 

9:“StringBuilder” 和 “String” 有何不同?

 用string += 追加的时候会分配新的地址,StringBuilder不会 ,所以StringBuilder的运行速度会快,不会浪费资源空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值