您的位置:首页 > 其它

.Net培训个人总结笔记14

2011-10-12 23:39 148 查看
学习交流,欢迎转载。转载请注明文章来源:/article/5869208.html

细节:
数组一旦声明了之后长度就是固定了的,不能在使用时再对数组的长度进行修改。
而 ArrayList 则相当于是动态长度的数组,随时需要随时添加。

细节:
ArrayList 的对象(暂设定为list)的 ToArray() 方法返回的是和该 list 对象中的元素个数和值都相同的一个 object 类型数组,list 对象里面的每个元素都拷贝一份,然后赋给要返回回来的新 object 数组中,而不是直接把 list 对象中的所有元素直接放到要返回回来的新 object 数组中,即传递的是拷贝,而不是引用(ArrayList 的 AddRange() 方法也类似)。
这和很多的字符串处理函数都相很相似,即返回的是值传递,不是引用传递。

细节:
1. ArrayList还有可以实现“把两个ArrayList合并”的功能的方法“AddRange(待合并的 ArrayList 对象)”,其实本质上是把一个 ArrayList 中的所有元素添加到另外一个 ArrayList 的对象中,如:list1.AddRange(list2);,这里的 list1 是目标的容器 ArrayList,而 list2 是将要被放到另一个 ArrayList 对象中的 ArrayList 对象,即把 list2 的所有元素添加到 list1 的末尾处,以实现“合并”效果。注意:这里的合并操作也是和 ToArray() 方法一样,传递的也是拷贝,而不是引用,例如这里的“list1.AddRange(list2);”,执行改代码时是把 list2 里的每个元素都先拷贝一份,然后把这些拷贝放到 list1 的末尾,而不是直接把 list2 中的每个元素的引用直接赋值到 list1 的末尾,即被合并到 list1 中的 list2 的所有元素都和原来的 list2 再没有任何关联,两者对各自的修改互不影响。
2. 另外,ArrayList 的 AddRange(ICollection c) 方法由于可传入的参数的类型是 ICollection 接口类型,所以凡是直接或间接继承了 ICollection 接口的类型的对象都可以作为 AddRange() 方法的参数,例如所有的数组 string[]、int[]、Person[](Person[] 为自定义的 Person 类的数组)等都可以作为参数传进 AddRange() 方法中。

细节:
1. .Net中所有的集合类都继承自 Array 类,Array 类是所有集合类的基类。(集合类有:数组、HashTable、HashSet、ArrayList、Dictionary 等)
2. .Net中所有的数组(如:int[]、string[]、byte[]等)都继承自 Array 类,Array 类也实现了 ICollection 接口。

细节:
List<int> listResult= listEven.Join(listOdd);//将偶数队列拼到奇数队列之后。

区别:
Convert 方式类型转换和 (type) 方式(即平常说的Cast方式或强制类型转换方式)类型转换的区别:
Cast 方式是从存储内容的数据类型层面来转换的,这中方式必须要在源类型和目标类型有交集的情况下才能用,例如:object→int、long→int 等,而 Convert 方式是从内容的意义、逻辑层面来转换的,不要求转换前后的两种类型必须要有交集,例如:string→int、string→bool 等。
一般能用 Cast 方式就尽量用 Cast 方式,因为 Convert 方式会比 Cast 方式消耗性能。

背景:
ArrayList 是很早就有的一个类(大概是 .Net1.0 或是 .Net1.1 时期的类),本身是没有泛型的,而后来才出了带泛型功能的 List<T> 类,这个可以看作是带泛型的 ArrayList 。

区别:
范型是 C++ 下的一个概念,而泛型则是 C# 下的概念。

细节:
Dictionary 添加键值对的方式有两种:(假设声明了: Dictionary<int, string> dict = new Dictionary<int, string>();)
1. dict.Add(key, value);
2. dict[key] = value;
注意:上面的“key”,“value”指的分别是 Dictionary 中的“键”和“值”。
其中,用方式 1 添加键值对时,可以添加重复的键值对(“重复”一般指的是 key 的重复),而且添加重复的键值对时新添加的键值对会覆盖旧的重复的键值对;而用方式 2 添加键值对时,则不可以添加重复的键值对,一旦被添加的键值对有重复的情况,在编译时就会报错“已添加了具有相同键的项”。

细节:
Dictionary<K,V> 对应的非泛型版本就是 Hashtable;
List<T> 对应的非泛型版本就是 ArrayList。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: