C#基础理念知识

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

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


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

1.关键字不同 一个是class,一个是struct     2.类型不同,一个是引用类型,一个是值类型(一个堆区,一个栈区)       

2.成员不同,结构体没有默认的构造函数(可以添加)和没有析构函数,不可以使用abstract,protected,sealed修饰

结构:                                                        类:
访问修饰符  struct  结构名                           访问修饰符   class  类名

{                                                                {
    //结构体                                                              //代码块
}      

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

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

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

int i=10; object o=i;(装) int c=(int)o;(拆)


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

  int[] num = { 8,11 ,9 , 18 ,14};
            for (int i = 0; i < num.Length; i++)
            {
                for (int j = i+1; j < num.Length; j++)
                {
                    if (num[i]>num[j])
                    {
                        int item = num[i];
                        num[i] = num[j];
                        num[j] =item;
                    }
          }

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

 public  int   Num(int shu)
        {
            if (shu == 2 || shu == 3){
                return shu;
          }  else{
                return Num(shu - 1) + Num(shu - 2);

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

1.ArrayList arraylist=new ArrayList(); 

特点:集合添加的值都会进行装箱处理,应为ArrayList只能添加object类型,取值的时候需要进行类型转换


2.List<string> list=new List<string>

特点:新增数据需要进行类型安全验证,获取数据的时候不用去强转


3.Hashtable hashtable = new Hashtable();

特点:存储的是键值对集合,一个空间放两个值(key,value),获取数据是不能通过下标取值,所以它只能通过foreach遍历数据,新增数据不用进行类型安全验证


4.Dictionary<int, string> pairs = new Dictionary<int, string>();

特点:存储的是键值对集合,一个空间放两个值(key,value),并且要进行类型安全验证,取值和Hashtable一样

 

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

1.const 一个包含不能修改的值的变量,readonly 允许把一个字段设置成常量

2. const 默认就是静态的,而 readonly 如果设置成静态的就必须显示声明。

3.4.const 对于引用类型的常数,可能的值只能是 string 和 null,readonly可以是任何类型


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

1、ref传进去的参数必须在调用前初始化,out不必,即:
int num;
SomeMethod( ref num );//语法错误
SomeMethod( out num );//通过

2、ref传进去的参数在函数内部可以直接使用,而out不可:
public void SomeMethod(ref int num)
{
   int shu=num;//通过
   //...
}
public void SomeMethod(out int num)
{
   int shu=num;//语法错误

}
 

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值