C#类

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

string    str    =    null   是不给他分配内存空间,而string    str    =    “”给它分配长度为空字符串的内存空间. 

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

不同点:类型不同,存储不同,关键字不同,作用不同,初始化不同

相同点:类和结构都可以new

类:

class A{

public static void Method1(int a, int b){

//方法体

}
}

结构:

struct student{ 

 int id=10;

}

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

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

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

举例:

int id =10;

   //装箱
 object i=id;

    //拆箱
int y=(int)i;

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:编程实现一个递归方法

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


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

特点:

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 和一个类等等。

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

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

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

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

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

不同:

 (1)从上测试结果来看,可以验证ref 和 out 都是传递地址,都会改变具体的值,ref 是有进有出,Out 是 只出不进,

 (2)ref可以把参数的数值传递进函数,

 (3)out是把参数清空,就是说你无法把一个数值从out传递进去,out进去后,参数的数值为空(参数不能拿到具体数值),所以你必须初始化一次!

代码举例:


public void foo(ref int r, out int o)
{
    if (o == 1)
    if (r == 0) 
      o = 0; 
    else
      o = -r;
       
    r = 0; 
}
 
public void Test()
{
    int r, o;
    r = 0;
    foo(ref r, out o); 
}

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

(1) string 对象时恒定不变的,stringBuider对象表示的字符串是可变的。stringBuilder是.net提供的动态创建string的高效方式,以克服string对象恒定性带来的性能影响。

(2)对于简单的字符串连接操作,在性能上stringBuilder并不一定总是优于string。因为stringBuider对象创建代价较大,在字符串目标连接较少的情况下,过度滥用stringBuilder会导致性能的浪费,只有大量的或者无法预知次数的字符串操作,才考虑stringBuilder来实现。事实上,一般连接次数设置100次以内,根本看不出两者的性能差别。

(3)当修改字符串信息时,此时不许创建对象,可以使用stringBuilder对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值