一维数组

  概述:数组是通过指定数组的元素类型、数组的(秩)维数及数组每个维度上的上限和下限来定义的,及一个数组的定义需要包含以下几个要素。

  类型   数组的维数   每个维的上限下限

  声明:数据类型  标识符  【正整数常量】;

  数组类型是从抽象基类型Array派生的引用类型,通过new运算符创建数组并将数组元素初始化为它们的默认值。

一维数组的声明和使用:

  静态一维数组:

    它是指数组元素的个数是固定不变的,即它们占用的内存空间大小是不变的。

    一维数组是具有相同数据类型的一维数据类型的集合。

  声明如下:type[ ] arrayName;

  初始化有很多方法:

           1.    int[ ] arr = new int[5];

           2.    int[ ] arr = new int[5]{1,2,3,4,5};

           3.    string[ ] arrstr;

      arrstr = new striing[7]{“sun”,”Mon”,”Tue”,”Wed”,”Thu”,”Fir”,”Sat”};

  动态一维数组

    动态数组的声明实际上就是将数组的声明部分和初始化部分,分别写在不同的语句中,动态数组的初始化也需要使用new关键字为数组元素非配内存空间,为数组元素赋初值。

  动态一维数组元素的声明如下:

    type [ ] arrayName;

    arrayName = new type[n];

    或

    type[ ] arrayname = new type[ ];

  对动态一维数组声明完以后,可以利用Length属性获取数组中元素的总数,并用for语句或foreach语句对数组进行动态赋值。

二维数组:

  静态二维数组:

  声明语法如下:

    type[,] arrayName;

  注:定义值类型的数组时,其默认值为0(包括整形,单精度,双精度),布尔类型默认值为false,字符数组默认值为’\0’,字符串默认值为null。

  在声明二维数组的同时直接进行初始化,可以省略new关键字,编译器将根据初始值的数量计算数组长度,并创建二维数组。

  动态二维数组:

  声明语法如下:

    Type[ , ] arrayName;

    arrayName = new type[n1,n2];

    或:

    Type[ , ] arrayName = new type[n1,n2];

  对动态二维数组声明完以后,可以通过给Array类对象的GetLength方法传递不同的参数,来获取二维数组的行数和列数,从而获取到二维数组中的每个元素。

 static void Main(string[] args)
{
/*
int[] arr = new int[6];
Console.WriteLine("请输入一维数组:");
for (int i = 0; i < arr.Length; i++)
{
arr[i] = Convert.ToInt32(Console.ReadLine());
}
Console.WriteLine("显示输入的数组:");
foreach (int item in arr)
{
Console.Write("{0}",item+",");
}
Console.WriteLine();
*/ /*
int[,] arr = new int[3, 2] {{1,1},{2,2},{3,3} };
Console.Write("数组的行数为:");
Console.WriteLine(arr.GetLength(0));
Console.Write("数组的列数为:");
Console.WriteLine(arr.GetLength(1));
Console.Write("\n");
for (int i = 0; i < arr.GetLength(0); i++)
{
string str = "";
for (int j = 0; j < arr.GetLength(1); j++)
{
str = str + Convert.ToString(arr[i, j]) + " ";
}
Console.Write(str);
Console.Write("\n");
}
*/
/*
int row = 0, col = 0;
Console.Write("请输入二维数组的行数:");
row = Convert.ToInt32((Console.ReadLine()));
Console.Write("请输入二维数组的列数:");
col = Convert.ToInt32((Console.ReadLine())); Console.WriteLine("请输入二维数组的值:");
int[,] arr1 = new int[row, col];
for (int i = 0; i < arr1.GetLength(0); i++)
{
for (int j = 0; j <arr1.GetLength(1); j++)
{
arr1[i, j] = Convert.ToInt32((Console.ReadLine()));
}
} //显示
Console.WriteLine("显示输入的二维数组:");
for (int i = 0; i < arr1.GetLength(0); i++)
{
for (int j = 0; j < arr1.GetLength(1); j++)
{
Console.Write(arr1[i,j]+" ");
}
Console.WriteLine();
}
*/ /*
// 冒泡排序
int[] arr = new int[]{1,4,3,5,7,2,6,10,9,8};
int temp;
Console.Write("排序前:");
foreach (int item in arr)
{
Console.Write(item+" ");
}
Console.WriteLine();
Console.Write("排序后:");
for (int i = 0; i < arr.Length-1; i++)
{
for (int j = i+1; j < arr.Length; j++)
{
if (arr[i] > arr[j])
{
temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
foreach (int item in arr)
{
Console.Write(item+" ");
}
*/ /*
// 选择排序
int[] arr = new int[] { 10,2,3,6,4,9,8,1,5,7};
Console.Write("排序前:");
foreach (int item in arr)
{
Console.Write(item+" ");
}
Console.WriteLine();
Console.Write("排序后:");
int min;
for (int i = 0; i < arr.Length-1; i++)
{
min = i;
for (int j = i+1; j < arr.Length; j++)
{
if (arr[min] > arr[j])
min = j;
}
int temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
foreach (int item in arr)
{
Console.Write(item+" ");
}
*/ Console.WriteLine();
Console.ReadLine();
}

ArrayList集合类:

  ArrayList集合位于System.Collections命名空间下,它可以动态的添加和删除元素,是一种非泛型集合类。ArrayList相当于一种高级的动态数组,它是Array类的升级版本,但它并不等同于数组。

ArrayList类概述:

   1、数组的容量是固定的,而ArrayList的容量可以根据需要自动扩充

   2、ArrayList提供添加、删除和插入某一范围元素的方法,但在数组中自能一次获取或设置一个元素的值。

   3、ArrayList将提供只读和固定大小包装返回到集合的方法,而数组不提供。

   4、ArrayList只是一维形式,而数组可以是多维的。

其属性如下:

Capacity

获取或设置 ArrayList 可包含的元素数。

Count

获取 ArrayList 中实际包含的元素数。

IsFixedSize

获取一个值,该值指示 ArrayList 是否具有固定大小。

IsReadOnly

获取一个值,该值指示 ArrayList 是否为只读。

IsSynchronized

获取一个值,该值指示是否同步对 ArrayList 的访问(线程安全)。

Item

获取或设置指定索引处的元素。

SyncRoot

获取可用于同步 ArrayList 访问的对象。

方法:

添加:

  public virtual int Add (object value);

  public virtual void Insert(int index,object value);

删除:

  public virtual void Clear();        //清除所有元素

  public virtual void Remove();   //移除特定对象的第一个匹配项

  public virtual void RemoveAt(int index);//移除指定索引处的元素

  public virtual void RemoveRange(int index,int count);//移除指定索引处的元素

  index:起始索引

  count:要移除的元素数

C#数组和集合的更多相关文章

  1. .NET 基础 一步步 一幕幕[数组、集合、异常捕获]

    数组.集合.异常捕获 数组: 一次性存储多个相同类型的变量. 一维数组: 语法: 数组类型[] 数组名=new 数组类型[数组长度]; 声明数组的语法: A.数据类型 [] 数组名称= new 数据类 ...

  2. [.net 面向对象编程基础] (17) 数组与集合

    [.net 面向对象编程基础] (17) 数组与集合 学习了前面的C#三大特性,及接口,抽象类这些相对抽象的东西以后,是不是有点很累的感觉.具体的东西总是容易理解,因此我们在介绍前面抽象概念的时候,总 ...

  3. paip.数组以及集合的操作uapi java php python总结..

    paip.数组以及集合的操作uapi 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/att ...

  4. c#重点[集合类型]异常,数组,集合ArrayList,List<>,hashTable,hashtable泛型(Dictionary)

    1.foreach[对一些数组或集合进行遍历] foreach(类型 变量名 in 集合对象){语句体} //定义一个数组 ,,,,, }; foreach(var i in sNum1) { Con ...

  5. 创建泛类集合List以及数组转集合,集合转数组的应用

    List<int> list = new List<int>(); list.Add(); list.Add(); list.Add(); list.AddRange(, , ...

  6. Java比较器对数组,集合排序一

    数组排序非常简单,有前辈们的各种排序算法,再加上Java中强大的数组辅助类Arrays与集合辅助类Collections,使得排序变得非常简单,如果说结合比较器Comparator接口和Collato ...

  7. java数组或集合返回空的问题

    在有返回值的情况下,平时我写代码基本遇到错误什么都是返回null,我因为我觉得把数组或集合这个初始化占空间. 但是我发现这样在每次客户段调用都要进行非空判断,而且有时调用内置api还容易报错误,于是解 ...

  8. C# 二维数组和集合

    本次课我主要学习了二维数组和集合的部分内容. 在二维数组的部分中,我主要学习了二维数组的定义方法:int [,] array=new int [4,2];做了一个小练习:用二维数组打印自己的姓氏. s ...

  9. C#重的数组、集合(ArrayList)、泛型集合(list<T>)三者比较及扩展延伸……

    本来我只想总结下数组.集合(ArrayList).泛型集合(list<T>)三者的比较的,可以一写下来要扩展的知识点有点多了,只能写一个小的知识点列表了如下: 1.数组.集合(ArrayL ...

  10. 初学者入门web前端 C#基础知识:数组与集合

    对于初学者,想要入门web前端,要有足够的信念和坚持,不然只会越走越远,我现在就深深的体会到. 我本是一个很拒绝代码的人,以前想过UI设计,但是在这段学习时间里,发现其实只要认真,代码并不是很难 所以 ...

随机推荐

  1. Android应用运行过程(转)

    源:Android应用运行过程 首先,ActivityThread从main()函数开始执行,调用prepareMainLooper()为UI线程创建一个消息队列(MessageQueue). 然后创 ...

  2. 处理JSON格式的数据

    JSON格式的数据是最常用的数据格式,处理方法的选择就显得比较重要了.我常用的一种是用对象来接收,然后保存在数组中,需要时直接从数组中取值.下面列出一个小例子. .h文件中: #import < ...

  3. android 多线程Thread,Runnable,Handler,AsyncTask

    先看两个链接: 1.http://www.2cto.com/kf/201404/290494.html 2. 链接1: android 的多线程实际上就是java的多线程.android的UI线程又称 ...

  4. Mysql死锁问题解决方式 & 聚簇索引、隔离级别等知识

    参考了这篇文章:http://www.cnblogs.com/LBSer/p/5183300.html  <mysql死锁问题分析> 写的不错. 如果Mysql死锁,会报出: 1.1 死锁 ...

  5. CSS中position属性( absolute | relative | static | fixed )详解

    我们先来看看CSS3 Api中对position属性的相关定义: static:无特殊定位,对象遵循正常文档流.top,right,bottom,left等属性不会被应用. relative:对象遵循 ...

  6. 9 Python+Selenium鼠标事件

    [环境信息] python3.6+Selenium3.0.2+Firefox50.0+win7 [ActionChains类鼠标事件的常用方法] 1.右击:context_click() 2.双击:d ...

  7. Delphi操作XML

    Delphi操作XML Delphi操作XMl,只要使用 NativeXml.我是用的版本是4..NativeXML的使用方法比较简单,但是功能很强大. XE2的话,要在simdesign.inc后面 ...

  8. MYSQL外键的使用以及优缺点

    主键和索引是不可少的,不仅可以优化数据检索速度,开发人员还省不其它的工作, 矛盾焦点:数据库设计是否需要外键.这里有两个问题:一个是如何保证数据库数据的完整性和一致性:二是第一条对性能的影响. 正方观 ...

  9. 用控制台命令拉取git最新仓库代码

    C#利用Diagnostics  拉取最新代码  示例代码 static void DiagnosticTest() { Process p; ProcessStartInfo psi; psi = ...

  10. ResultSet遍历过程中修改自身数据,不会改变循环的过程

    ResultSet遍历过程中修改自身数据,不会改变循环的过程: import java.sql.Connection; import java.sql.PreparedStatement; impor ...