c#类

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

  1. string str = null 没有创建内存空间,str中存放的是空引用指针;
  2. string str = "" 创建了内存空间,str中存放的是指向堆中的指针


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

(1)C#允许在类里对字段进行初始化,不允许在结构里也这样做。结构里的字段将被自动设置为0或NULL。

(2)C#不允许在结构里声明一个无参构造器,C#做出这一限制的目的是为了加快基于结构的数组的创建速度。

(3)继承能力是类和结构的重要区别之一。结构不支持继承机制。所有的结构都是从System.ValueType类间接地派生出来的,而System.ValueType类又是从System.Object类派生出来的。但C#不允许程序员声明一个继承自某个结构的类,也不允许程序员声明一个继承自另一个结构的结构。一旦声明了一个结构,从System.ValueType类一直延续到这个结构的“家谱线”就走到尽头了。

(4)结构是值类型,类是引用类型。

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

  1.  值类型转换为引用类型为装箱

  2. 引用类型转换为值类型为拆箱
int i=123;
object o=i;//装箱
int j=(int)o;//拆箱

拆箱必须为显式


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

 //冒泡排序
        public void BubbleSort(double[] data)
        {
            for (int i = 0; i < data.Length - 1; i++)
            {
                for (int j = data.Length - 1; j >i; j--)
                {
                    if (data[j] > data[j - 1])
                    {
                        data[j] = data[j] + data[j - 1];
                        data[j - 1] = data[j] - data[j - 1];
                        data[j] = data[j] - data[j - 1];
                    }
                }
            }
        }


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

public static long Face(int n) {
            if (n <= 1)
            {
                return 1;
            }
            else {
                return n * Face(n-1);
            }
        }


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

 

  1. ArrayList集合,动态可维护,其主要应用在当需要进行存储的数据中有多种类型,同时程序也不是太计较性能的得失,因为其要进行装箱和拆箱操作,这个操作非常消耗性能

  2. Hashtable使用键值对存储,存储的对象类型不计,需要进行装箱拆箱

  3. 泛型集合list<T>,使用类型参数限制存储的值的类型,减少装箱拆箱,保护数据安全

  4. 泛型集合Dictionary<K,V>通过键值对保存数据,无需装箱拆箱,


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

1. const 字段只能在该字段的声明中初始化。
readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。
2. const 字段是编译时常数,而 readonly 字段可用于运行时常数。
3. const 默认就是静态的,而 readonly 如果设置成静态的就必须显示声明。
4.const 对于引用类型的常数,可能的值只能是 string 和 null。
readonly可以是任何类型


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

 


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

  1. 1、string

             string是一个不可变的字符串,每次对string类型进行运算(赋值或拼接)的时候其实相当于重新生成了一个新的string对象,然后指针指向了新的string对象,会对系统的性能产生影响,不适合大量、频繁字符串的拼接。

  2.  stringBuilder提供 Append方法,能在已有对象的原地进行字符串的修改,一般情况下看不出和string有和差异,但是如果对大量字符串进行添加操作,stringbuilder耗费的时间比string少的多。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值