学习.Net的第二天

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`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值