C#数组,多维数组,动态数组
C#数组,多维数组,动态数组数组 Array
C#Array类说明: 提供创建、操作、搜索和排序数组的方法,因而在公共语言运行库中用作所有数组的基类。
数组可分为一维数组和多维数组。数组索引从0开始,array[0]表示第一个元素,最后一个元素表示为 array.Length-1。
Array 类是支持数组的语言实现的基类。但是,只有系统和编译器能够从 Array 类显式派生。用户应当使用由语言提供的数组构造。
一个元素就是 Array 中的一个值。Array 的长度是它可包含的元素总数。Array 的秩是 Array 中的维数。 Array 中维度的下限是 Array 中该维度的起始索引,多维 Array 的各个维度可以有不同的界限。
一维数组定义
下面数组定义会编译错误
//Array creation must have array size or array initializer
//必须定义数组长度或初始化数组
int[] iArrayNoElement=new int[]; //没有指定长度
多维数组定义
数组可以具有多个维度。
一维/多维数组测试案例
动态数组(ArrayList)
动态数组测试案例1
动态数组测试案例2
C#Array类说明: 提供创建、操作、搜索和排序数组的方法,因而在公共语言运行库中用作所有数组的基类。
数组可分为一维数组和多维数组。数组索引从0开始,array[0]表示第一个元素,最后一个元素表示为 array.Length-1。
Array 类是支持数组的语言实现的基类。但是,只有系统和编译器能够从 Array 类显式派生。用户应当使用由语言提供的数组构造。
一个元素就是 Array 中的一个值。Array 的长度是它可包含的元素总数。Array 的秩是 Array 中的维数。 Array 中维度的下限是 Array 中该维度的起始索引,多维 Array 的各个维度可以有不同的界限。
数组原形。参考System.Array metadata:
public abstract class Array : ICloneable, IList, ICollection, IEnumerable
{
...
}
public abstract class Array : ICloneable, IList, ICollection, IEnumerable
{
...
}
一维数组定义
string[] sArray = new string[10]; //定义长度为10的字符串数组
int[] iArray = new int[1]; //定义长度为1的数字数组
long[] lArray = new long[] { };//定义长度为0的长整型数组
int[] iValue = new int[3] { 100, 200, 300 };//定义数组并初始化值
//定义数组并初始化值相当于:
iValue[0]=100;
iValue[1]=200;
iValue[2]=300;
int[] iArray = new int[1]; //定义长度为1的数字数组
long[] lArray = new long[] { };//定义长度为0的长整型数组
int[] iValue = new int[3] { 100, 200, 300 };//定义数组并初始化值
//定义数组并初始化值相当于:
iValue[0]=100;
iValue[1]=200;
iValue[2]=300;
下面数组定义会编译错误
//Array creation must have array size or array initializer
//必须定义数组长度或初始化数组
int[] iArrayNoElement=new int[]; //没有指定长度
多维数组定义
数组可以具有多个维度。
//two-dimensional
//多维数组定义
int[,] twoDim = new int[2, 4]; //定义2行,每行4列的整数数组
int[,] twoDim = new int[2, 3] { { 1, 2, 3 }, { 100, 200, 300 } }; //2维数组赋值
//twoDim 相当于:
twoDim[0,0] =1;
twoDim[0,1] =2;
twoDim[0,2] =3;
twoDim[1,0] =100;
twoDim[1,1] =200;
twoDim[1,2] =300;
//多维数组定义
int[,] twoDim = new int[2, 4]; //定义2行,每行4列的整数数组
int[,] twoDim = new int[2, 3] { { 1, 2, 3 }, { 100, 200, 300 } }; //2维数组赋值
//twoDim 相当于:
twoDim[0,0] =1;
twoDim[0,1] =2;
twoDim[0,2] =3;
twoDim[1,0] =100;
twoDim[1,1] =200;
twoDim[1,2] =300;
一维/多维数组测试案例
public class TestMultiArray
{
public void Test()
{
//定义2维数组
int[,] ma = new int[4, 2];
ma[0, 0] = 3;
ma[0, 1] = 34; //第1行结束
ma[1, 0] = 1;
ma[1, 1] = 8;//第2行结束
ma[2, 0] = 898;
ma[2, 1] = 83;//第3行结束
ma[3, 0] = 352;
ma[3, 1] = 19;//第4行结束
//将2维数组转换为1维数组
int[] asm = new int[ma.Length]; //ma.Length=2维数组数量
//转换过程
int t = 0;
for (int i = 0; i < 4; i++)
{
for (int s = 0; s < 2; s++)
{
asm[t] = ma[i, s];
t++; //计算器
}
}
Array.Sort(asm); //排序
//输出显示
foreach (int z in asm)
Console.WriteLine(z.ToString());
}
}
{
public void Test()
{
//定义2维数组
int[,] ma = new int[4, 2];
ma[0, 0] = 3;
ma[0, 1] = 34; //第1行结束
ma[1, 0] = 1;
ma[1, 1] = 8;//第2行结束
ma[2, 0] = 898;
ma[2, 1] = 83;//第3行结束
ma[3, 0] = 352;
ma[3, 1] = 19;//第4行结束
//将2维数组转换为1维数组
int[] asm = new int[ma.Length]; //ma.Length=2维数组数量
//转换过程
int t = 0;
for (int i = 0; i < 4; i++)
{
for (int s = 0; s < 2; s++)
{
asm[t] = ma[i, s];
t++; //计算器
}
}
Array.Sort(asm); //排序
//输出显示
foreach (int z in asm)
Console.WriteLine(z.ToString());
}
}
动态数组(ArrayList)
经常使用的一个类,使用大小可按需动态增加的数组实现IList 接口。
不保证会对 ArrayList 排序。在执行需要对 ArrayList 排序的操作(如 BinarySearch)之前,必须对 ArrayList 进行排序。
ArrayList 的容量是 ArrayList 可以保存的元素数。ArrayList 的默认初始容量为 0。随着元素添加到 ArrayList 中,容量会根据需要通过重新分配自动增加。可通过调用 TrimToSize 或通过显式设置 Capacity 属性减少容量。
使用整数索引可以访问此集合中的元素。此集合中的索引从零开始。
ArrayList 接受空引用作为有效值并且允许重复的元素。
//动态数组原形。参考System.Collections
public class ArrayList : IList, ICollection, IEnumerable, ICloneable
{
......
}
public class ArrayList : IList, ICollection, IEnumerable, ICloneable
{
......
}
动态数组测试案例1
using System;
using System.Collections;
public class SamplesArrayList {
public static void Main() {
//创建并初始化动态数组
ArrayList myAL = new ArrayList();
myAL.Add("Hello");
myAL.Add("World");
myAL.Add("!");
//显示动态数组的属性值
Console.WriteLine( "myAL" );
Console.WriteLine( " Count: {0}", myAL.Count );
Console.WriteLine( " Capacity: {0}", myAL.Capacity );
Console.Write( " Values:" );
PrintValues( myAL );
}
public static void PrintValues( IEnumerable myList ) {
foreach ( Object obj in myList )
Console.Write( " {0}", obj );
Console.WriteLine();
}
}
using System.Collections;
public class SamplesArrayList {
public static void Main() {
//创建并初始化动态数组
ArrayList myAL = new ArrayList();
myAL.Add("Hello");
myAL.Add("World");
myAL.Add("!");
//显示动态数组的属性值
Console.WriteLine( "myAL" );
Console.WriteLine( " Count: {0}", myAL.Count );
Console.WriteLine( " Capacity: {0}", myAL.Capacity );
Console.Write( " Values:" );
PrintValues( myAL );
}
public static void PrintValues( IEnumerable myList ) {
foreach ( Object obj in myList )
Console.Write( " {0}", obj );
Console.WriteLine();
}
}
动态数组测试案例2
public void TestDynimicArray()
{
IList list = new ArrayList();//定义动态数组
list.Add("www.vjsdn.com");
list.Add("www.msdn.com");
list.Add(new object()); //插入一个对象
//循环显示动态数组的元素
foreach (object o in list)
Console.WriteLine(o.ToString());
}
{
IList list = new ArrayList();//定义动态数组
list.Add("www.vjsdn.com");
list.Add("www.msdn.com");
list.Add(new object()); //插入一个对象
//循环显示动态数组的元素
foreach (object o in list)
Console.WriteLine(o.ToString());
}
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网