C#类

it2022-05-05  170

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

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

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

不同点:

1.关键字不同 一个是class,一个是struct; 2.类型不同,一个是引用类型,一个是值类型; 3.成员不同,结构体没有默认的构造函数(可以添加)和没有析构函数,不可以使用abstract,protected,sealed修饰; 4.Struct变量使用完之后就自动解除内存分配,Class实例有垃圾回收机制来保证内存的回收处理; 5.继承性。结构不可以继承自另一个结构或被继承,但和类一样可以继承自接口; 6.在结构体中可以声明字段,但是声明字段的时候是不能给初始值的.; 7.实体类中如果我们没有显示的定义构造函数,那么会有一个隐式无参的构造函数(重载构造函数之后,需要显示声明无参构造函数),而在结构体中隐身无参的构造函数无论如何都存在;  8.在类中可以显示的定义无参的构造函数,而在结构体中我们不能显示的定义无参的构造函数; 9.结构体是可以New的,而结构体构造函数要求必须要为所有的字段赋值.即使是无参的构造函数,也会给值类型赋初值为0,引用类型赋初值为null。 //定义类的语法 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” 参数有何不同?用代码举例

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

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

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

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


最新回复(0)