002 C#类

it2022-05-05  131

01:在C#中,string str = null 与 string str = “” 请尽量使用文字或图 在第一个 str赋值的是null 它虽然赋值了null 但是没有开辟空间,在第二个str赋值的是“ ” 它赋值了也开辟了新的空间。

02:简述类和结构的相同点和不同点。并用代码举例。 结构不可以new 还不可以包含方法 只能包含变量 结构是值类型 结构不能定义无参数的构造方法。类可以new 可以有方法 类是引用类型。

public class student { public int age; public int Age { get{return age} set{age=value} } } //类 public struct Student { public int age; public int id; } //结构

结构类 03:什么是拆箱和装箱? 举例说明 装箱就是把值类型转换为引用类型 int num = 1 ;Object o = num;

拆箱就是把num存进去的类型 在转出来 num = (int)o;

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

static void Main(string[] args) { int[] arr = { 4, 2, 5, 8, 1 }; for (int i = 0; i < arr.Length; i++) { for (int j = 0; j < arr.Length-1; j++) { if (arr[j]>arr[j+1]) { int num = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = num; } } } for (int i = 0; i < arr.Length; i++) { Console.WriteLine(arr[i]); }

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

public int dugui(int num) {     if(num ==1 || num == 2) return num;     return dugui(num-1) + dugui(num-2); }

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

答:

Dictionary<TKey,TValue>   Dictionary<TKey,TValue>可能是我们最常用的关联性集合了,它的访问,添加,删除数据所花费的时间是所有集合类里面最快的,因为它内部用了Hashtable作为存储结构,所以不管存储了多少键值对,查询/添加/删除所花费的时间都是一样的,它的时间复杂度是O(1)。

  Dictionary<TKey,TValue>优势是查找插入速度快,那么什么是它的劣势呢?因为采用Hashtable作为存储结构,就意味着里面的数据是无序排列的,所以想按一定的顺序去遍历Dictionary<TKey,TValue>里面的数据是要费一点工夫的。

List<T>   泛型的List 类提供了不限制长度的集合类型,List在内部维护了一定长度的数组(默认初始长度是4),当我们插入元素的长度超过4或者初始长度 的时候,会去重新创建一个新的数组,这个新数组的长度是初始长度的2倍(不永远是2倍,当发现不断的要扩充的时候,倍数会变大),然后把原来的数组拷贝过来。所以如果知道我们将要用这个集合装多少个元素的话,可以在创建的时候指定初始值,这样就避免了重复的创建新数组和拷贝值。

  另外的话由于内部实质是一个数组,所以在List的未必添加数据是比较快的,但是如果在数据的头或者中间添加删除数据相对来说更低效一些因为会影响其它数据的重新排列。

LinkedList<T>   LinkedList在内部维护了一个双向的链表,也就是说我们在LinkedList的任何位置添加或者删除数据其性能都是很快的。因为它不会导致其它元素的移动。一般情况下List已经够我们使用了,但是如果对这个集合在中间的添加删除操作非常频繁的话,就建议使用LinkedList。

HashSet<T>   HashSet是一个无序的能够保持唯一性的集合。我们也可以把HashSet看作是Dictionary<TKey,TValue>,只不过TKey和TValue都指向同一个对象。HashSet非常适合在我们需要保持集合内元素唯一性但又不需要按顺序排列的时候。

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

答:

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

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

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

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

用string += 追加的时候会分配新的地址,StringBuilder不会 ,所以StringBuilder的运行速度会快,不会浪费资源空间。


最新回复(0)