一、数组分类

  数组可以简单分为3类:

  • 1维数组
  • 2维数组
  • 交错数组

二、数组初始化

  1.一维数组

  int [] A = { 1,2,3,4 } 直接赋值

  或者

  int [] A = new int [4]{ 1,2,3,4 } new一下,并声明大小

  2.二维数组

  每行个数必须相同,适合规整的数据存储;

  int[,] AA={ {1,2 }, { 4,5 }, {6,7 } }; 直接赋值

  int[,] AA=new int[ , ] { {1,2 }, { 4,5 }, {6,7 } };new一下

  int[,] AA=new int[3,2] { {1,2 }, { 4,5 }, {6,7 } };new 并同时声明大小

  注意:没有声明子项长度时,数组每个子项的大小,必须和第一个子项相同。

  3.交错数组

  每项的个数不一定相同,自由度较高;

    int[][] AAA = { new int[]{1}, new int[]{1,2}, new int[]{3,2} };

  注意:交错数组和二维数组的区别是,交错数组并不限制子项的大小一致。


三、数组常用函数

  int A[]的各种函数其实是由Array类来提供的,下面是Array的属性和方法:

函数名

方法

示例

Clear

清空

Clear(Array array, int index, int length);

根据元素的类型,设置数组中某个范围的元素为零、为 false 或者为 null。

Array.Clear(A,0,3);

Copy

复制

void Copy(Array sourceArray, Array destinationArray, int length);

从一个数组A复制某范围内地 数据到另一个数组B

Array.Copy(A, B, 3);

GetLength

获得长度

int GetLength(int dimension);

获得长度

A.GetLength();

GetValue

获得某下标的值

Object GetValue(Int32)

获取一维数组中指定位置的值。索引由一个 32 位整数指定。

Object obj = A.GetValue(1)

等价于 A[1]

SetValue

设置某下标的值

void SetValue(object value, int index);

当前表示设置1维数组A[index]=value;

void SetValue(object value, long index1, long index2);

当前表示设置2维数组A[index1][index2]=value;

A.SetValue(10,1);

等价于 A[1]=10

IndexOf

查找

int IndexOf(Array array, object value);

第一个出现value数值的位置

int LastIndexOf(Array array, object value, int startIndex);

最好出现value数值的位置

Sort

排序

Sort(Array array)

将数组按照某个规则排序

下面详解

Reverse

翻转

void Reverse(Array array);

将数组翻转

Resize

重设大小

void Resize<T>(ref T[] array, int newSize);

重新设置数组大小

更多函数,请详见:class Array类


四、重点函数详解

  (1)Sort排序:

void Sort(Array array);  默认排序

void Sort(Array array, int index, int length);   从index开始,截取length长度的数据排序

void Sort(Array array, IComparer comparer);  常规的int/string类型数据,自定义排序

void Sort<T>(T[] array, Comparison<T> comparison);  结构体、类等复杂的数据类型 排序,在comparison自定义排序规则

void Sort(Array keys, Array items);  两组数组一起排序,结果按照数组keys的默认排序来排。

void Sort(Array keys, Array items, IComparer comparer);  两组数组一起排序,结果按照数组keys的自定义排序来排。

(2)Resize重新设置大小:

void Resize<T>(ref T[] array, int newSize);

  此方法分配指定大小的新数组,将元素从旧的数组复制到新,然后使用新替换旧的数组。array必须是一维数组。

    • 如果array是null,此方法具有指定大小创建一个新数组。
    • 如果newSize大于Length的旧的数组中,分配一个新数组,且所有元素从旧的数组都复制到新。 
    • 如果newSize是小于Length的旧的数组中,分配一个新数组和元素从旧数组复制到新直到填充新的; 旧的数组中的元素的其余部分将被忽略。 
    • 如果newSize等同于Length的旧的数组,此方法不执行任何操作。

 

C# 数组之int[]的更多相关文章

  1. C#List转字符串,字符串转List,字符数组转Int数组

    List转字符串 [C#] 纯文本查看 复制代码 ? 01 02 List<string> List = new List<string>(); string strArray ...

  2. java 字节数组转int

    4字节数组转int类型 小端模式 /** * 数组转int类型 * * @param src * @return */ public static int bytesToInt(byte[] src) ...

  3. 【转】java中byte数组与int类型的转换(两种方式)----不错

    原文网址:http://blog.csdn.net/piaojun_pj/article/details/5903009 java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法, ...

  4. C# string数组转int数组(转载)

    C# string数组转int数组   用法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 //字符串数组(源数组) string[] sNums = new[] {"1 ...

  5. C# string数组转int数组

    用法 //字符串数组(源数组) string[] sNums = new[] {"1", "2"}; //整型数组(目标数组) int[] iNums; //转 ...

  6. byte数组和int之间相互转化的方法

    Java中byte数组和int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送者接收的数据都是byte数组,但是int类型是4个byte组成的,如何把一个整形in ...

  7. 数组转集合、集合转数组、字符串数组与int型、long型数组等的转换

    在项目中经常会遇到数组转集合.集合转数组.数组之间类型转换等操作 1.数组转集合 为了实现把一个数组转换成一个ArrayList,很多Java程序员会使用如下的代码: String str[] = { ...

  8. 【转】C# string数组转int数组

    //字符串数组(源数组) string[] sNums = new[] {"1", "2"}; //整型数组(目标数组) int[] iNums; //转换方法 ...

  9. Java 中 byte、byte 数组和 int、long 之间的转换

    Java 中 byte 和 int 之间的转换源码: //byte 与 int 的相互转换 public static byte intToByte(int x) { return (byte) x; ...

  10. string 数组转 int 数组

    用法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 //字符串数组(源数组) string[] sNums = new[] {"1", "2" ...

随机推荐

  1. html5--2.1新的布局元素概述

    html5--2.1新的布局元素概述 学习要点 了解HTML5新标签(元素)的优点 了解本章要学习的新的布局元素 了解本章课程的安排 HTML5新标签的优点: 更注重于内容而不是形式 对人的友好:更加 ...

  2. 基于node.js及express实现中间件,实现post、get

    首先,当然是有必要的环境,安装node,这个我就不多说了. 依赖模块: "express": "^4.13.4", "request": & ...

  3. hls协议(最清晰的讲解)

    今天来介绍一下HLS协议,这个协议是由苹果公司提出并推广开来的.来一段维基百科的定义. HTTP Live Streaming(缩写是HLS)是一个由苹果公司提出的基于HTTP的流媒体网络传输协议.是 ...

  4. BZOJ-3940:Censoring(AC自动机裸题)

    Farmer John has purchased a subscription to Good Hooveskeeping magazine for his cows, so they have p ...

  5. [转]script之defer&async

    html5中script的async属性 我兴奋于html5的原因之一是一些久久未能实现的特性现在可以真正运用于实际项目中了. 如我们使用placeholder效果蛮久了但是那需要javascript ...

  6. hdu 5730 Shell Necklace —— 分治FFT

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5730 DP式:\( f[i] = \sum\limits_{j=1}^{i} f[i-j] * a[j] ...

  7. NancyFX 第二章 Rest框架

    正如你看到的,Nancy有两个主要用途. 其中第一项是作为一种通用的基于 REST 框架,可替代 ASP.NET Web API 或其他Rest工具包. 默认情况下,Nancy提供一流的路由和内容协商 ...

  8. May we can use Turbolinks or Pjax in our web apps

    Turbolinks[1]: Turbolinks makes following links in your web application faster.Instead of letting th ...

  9. QListWidget笔记

    1.头文件:#include <QListWidget> 2.继承自:QListView 3.基本代码: #include "mainwindow.h" #includ ...

  10. 2-6 Flutter开发环境与Android开发环境设置实操(Windows)

    通常安装完AS后,sdk的目录 C:\Users\wjw\AppData\Local\Android\sdk 如果在这个目录下没有找到sdk的目录的话 Settings里面搜索sdk,找到Androi ...