Array:ICollection,IList,IStructuralComparable, IStructuralEquatable

3300行,但是只是数组的基本操作并不难理解

最重要的其实就是两个方法吧

BinarySearch()
Sort()

最常用的方法时

IList.this[]
Copy()
Length
ConvertAll()

方法列表

0. publis static void Resize<T>();使用Array.Copy来将旧数组复制到新数组 1. public unsafe static Array CreateInstance();调用 private unsafe static extern Array internalCreateInstance()2. public extern void Copy(....,bool reliable)reliable=false 是copy方法的默认行为3. public static void ConstrainedCopy()内部调用Array.Copyreliable=true,这是和Copy方法唯一的不同当为true时,要么复制成功,要么失败抛出异常,有点事务的意思这个方法的特殊就在于他是一个特殊的Copy,值得取个新名字4. public static extern void Clear(Array,int index,int length);将数组设置成默认值(0或null),从index开始可以设置将制定的区间设置为默认值5. public unsafe Object GetValue(params int[] indices);  //获取一维数组指定索引处的值内部调用 private unsafe extern void InternlGetReference() 因为IList this[]接口的原因,有效的隐藏了调用这个方法的细节,这时一种巨大的好处public unsafe void SetValue(object value,params int[] indices); //设置一维数组指定索引处的值内部调用 private unsafe extern static void InternalSetValue()6. GetLowerBound(Int32 )  返回指定维度的第一个元素的索引GetUpperBound(Int32 ) 返回数组中指定维度的最后一个元素的索引7.  public extern int Length{get;}public extern int Rank{get;}  返回维度,1维返回1,二维数组返回28. List,ICollection 的属性 这些常规当时并不有用Count,SyncRoot,IsReadOnly,IsFixedSize,IsSynchronized9. 实现索引访问居然使用的是GetValue,好吧我之前想的是为什么GetValue中为什么不直接用索引,原来是忘了先有鸡还是先有蛋public Object IList this[int index]{get{return GetValue(index);}set{SetValue(value,index)};}}10. Add(object value);  //throw not support 如果接口定义了但是我就是不想提供这个功能,可以用not support异常11. 不支持接口的方法有IList.Insert()IList.Remove()IList.RemoveAt()12. Object.Clone()内部调用 Object.MemberwiseClone()13. CompareTo(Object other,IComparer comparer);14. GetHashCode 它要怎么实现呢?,也许这里实现并不重要,因为它不需要使用散列表15. BinarySearch(Array array,int index,int length,Object value,IComparer comparer)在该类内部实现BinarySearch<T>(T[] array,int index,int legnth,T value,IComparer<T> comparer)ArraySortHelper 中定义方法其实无论是哪种,二分查询他写的和我写的最大的区别,就是它能想到的情况比我更复杂,它的性能考虑比我更有条理,有套路
17. ConvertAll使用委托和for循环,一个一个的转化,然后一个一个的用索引修改既然它这样做了,我觉得也没什么不可以啊18. Find,FindIndex,FindLastIndex,FindAll,Foreach,IndexOf()都是O(n)就是普通的循环但是比较数据是由一个明显的区分的null 用 == 解决非null 用 .Equals()  判断,因为在Equals可能没有对other做null的判断,或则抛出了异常,这样写

转载于:https://www.cnblogs.com/zhangrCsharp/p/7695572.html

2.2. Array相关推荐

  1. 老男孩上海校区Python面试题

    python面试题 第一章:python基础 数据类型: 1 字典: 1.1 现有字典 dict={'a':24,'g':52,'i':12,'k':33}请按字典中的 value 值进行排序? 1. ...

  2. php recordarray,Array 数组 - [ php中文手册 ] - 在线原生手册 - php中文网

    用户评论: [#1] florenxe [2015-10-07 18:53:45] //a nice little way to print leap years using array for ($ ...

  3. NumPy — 创建全零、全1、空、arange 数组,array 对象类型,astype 转换数据类型,数组和标量以及数组之间的运算,NumPy 数组共享内存

    NumPy 简介 一个用 python 实现的科学计算包.包括: 1.一个强大的 N 维数组对象 Array : 2.比较成熟的(广播)函数库: 3.用于整合 C/C++ 和 Fortran 代码的工 ...

  4. array.array python yhzf

    关于array: Python 本身没有数组这个说法, 有的就是list和tuple, list就具有其他语言中的数组特性. 至于list和tuple的区别,在于list可以在运行时修改内容和大小,t ...

  5. [JS]请给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组。

    请给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组. 刚开始复习js题还不太习惯 CSDN上看了一个帖子,说是牛客上的标答, ...

  6. hnswlib RuntimeError: Cannot return the results in a contigious 2D array. Probably ef or M is to sma

    1. 问题现象 index = hnswlib.Index(space = '100', dim = 512) index.init_index(max_elements = 100, ef_cons ...

  7. Array 数组去重 总结10方法(7)

    1,常规双循环去重(缺点:循环次数较多) Array.prototype.unique1 = function(){if(this === null){throw new TypeError('&qu ...

  8. ECMAScript——引用数据类型之array

    array 转载于:https://www.cnblogs.com/cataway/p/4967058.html

  9. leetcode:Search in Rotated Sorted Array

    题目要求: Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 ...

  10. intval0.57100 php_php中0,'',null,false,true,FLASE,TREU,array()的相等恒等学习

    //比较值 '' NULL 0 false true FALSE TRUE //相等判断 //'' == NULL == 0 == false (相等) //array() = 0 == NULL = ...

最新文章

  1. [SDOI2015]权值
  2. stc15w404as引脚图_STC15F2K6S2与stc15w404AS的spi通讯
  3. 区域和裁减区域-Window GDI
  4. 申请美国博士后的经验
  5. java语言_JAVA语言
  6. CF1303F - Number of Components(并查集)
  7. linux文件权限umask,linux系统中UMASK权限的用法讲解
  8. 单选按钮 RadioButton 与 pannel控件
  9. selenium python 启动Chrome
  10. 或许是比力扣 leetcode 更好的选择?推荐两个编程算法宝藏网站
  11. j3455跑mysql_看烦了千篇一律的J3455?让黑群晖显示真实的CPU信息
  12. 51单片机定时器TMOD与TCON、SCON
  13. 自底向上与自顶向下(递归与动态规划)
  14. 手把手教你用Python创建SQL数据库~
  15. 《达芬奇密码》读后感
  16. X360吉他英雄4鼓套装 1 TB硬盘入手
  17. 关于stylegan3第一次运行编译filtered_lrelu_plugin出错的问题
  18. MongoDB文件服务器搭建
  19. 周记---学会推迟满足感 享受长远的趣味
  20. 知名学者,全职加盟C9高校!

热门文章

  1. IT外企那点事[转载]
  2. 湖南省第八届大学生程序设计大赛原题 D - 平方根大搜索 UVA 12505 - Searching in sqrt(n)...
  3. 【转】PHP获取重定向URL的几种方法
  4. postfix 遇到的问题
  5. iOS开发拓展篇—CoreLocation简单介绍
  6. jQuery+ajax中,让window.open不被拦截(转)
  7. Expression Blend 4 激活码
  8. android-sqlite小实例
  9. 协议森林03 IP接力赛 (IP, ARP, RIP和BGP协议)
  10. ASP.NET MVC 2 模型验证