zoukankan      html  css  js  c++  java
  • .Net培训个人总结笔记14

    学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2214009.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。

  • 相关阅读:
    Django -- 模板系统
    CSRF_TOKEN
    MySQL的sql_mode模式说明及设置
    程序员必备的600单词
    前端 -- jQuery
    datatime模块
    github高效搜索
    Mac上Homebrew常用命令总结
    对比System.currentTimeMillis()、new Date().getTime()、System.nanoTime()
    MACOS安装使用kafka
  • 原文地址:https://www.cnblogs.com/lgjspace/p/2214009.html
Copyright © 2011-2022 走看看