C#类

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

string str= " ",表示一个空串,被实列化了,占用了内存空间;
string str=null,表示一个空引用,没有占用了空间。
02:简述类和结构的相同点和不同点。并用代码举例。

相同点:都有属性和方法;和类一样可以继承自接口

不同点:

  1. 1.关键字不同 一个是class,一个是struct;
    2.类型不同,一个是引用类型,一个是值类型;
    3.成员不同,结构体没有默认的构造函数(可以添加)和没有析构函数,不可以使用abstract,protected,sealed修饰;
    4.Struct变量使用完之后就自动解除内存分配,Class实例有垃圾回收机制来保证内存的回收处理;
    5.继承性。结构不可以继承自另一个结构或被继承,但和类一样可以继承自接口;
    6.在结构体中可以声明字段,但是声明字段的时候是不能给初始值的.;
    7.实体类中如果我们没有显示的定义构造函数,那么会有一个隐式无参的构造函数(重载构造函数之后,需要显示声明无参构造函数),而在结构体中隐身无参的构造函数无论如何都存在;
     8.在类中可以显示的定义无参的构造函数,而在结构体中我们不能显示的定义无参的构造函数;
    9.结构体是可以New的,而结构体构造函数要求必须要为所有的字段赋值.即使是无参的构造函数,也会给值类型赋初值为0,引用类型赋初值为null。
  2.    //定义类的语法    
     
     class Class1
        {
            private string name;
     
            private int age;
     
            public void SayHi()
     
            {
     
                Console.WriteLine("Hello,My Name is " + this.name + ",My Age is " + this.age);
     
            }
     
        }
     //定义结构的语法. 
    struct Rectangle
        {
     
            private int width;
     
            private int height;
     
            public int GetArea()
     
            {
     
                return this.width * height;
     
            }
     
        }

     

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

值类型和引用类型的相互装换——值类型到引用类型叫装箱,反之就叫拆箱。

int a =9;
Object b =(object) a;//装箱
a=(int)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++)
            {
                #region将大的数字移到数组的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;
                    }
                }
            }
            Console.WriteLine("排序后的数组:");
            foreach (int item in arr)
            {
                Console.Write(item+"");
            }
            Console.WriteLine();
            Console.ReadKey();


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

 static void Main(string[] args)
        {
            //计算5天
            Console.WriteLine("最终值" + FunFor(5)); 
            Console.ReadKey();
        }
        //For语句
        static int FunFor(int date)
        {
            int sum = 0;
            for (int i = 1; i <= date; i++)
            {
                sum += i;
                Console.WriteLine(i);
            }
            return sum;
        }
 
        //递归函数
        static int FunRecursion(int date)
        {
            Console.WriteLine(date);
            if(date == 0)
            {
                return 0;
            }
            else
            {
                 
                return FunRecursion(date-1) + date;
            }
        }


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

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

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

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

const 只读 但不能修改,readonly 只读可修改

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

  1. 调用带ref关键字的函数,必须对 ref 对应的参数赋值;而out关键字不需要。
  2. 带ref 关键字的函数内部可以直接使用 ref 对应的参数;out 关键字的函数,必须在函数内部对out对应的参数赋值后才能使用

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

String表示“字符串”,可以直接赋值一个字符串,它内部是“不可变的”;

StringBuilder表示”字符串的工具类”,专门用于“拼接字符串”,它内部是“可变的”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值