C#数组,多维数组,动态数组
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());
}
参考文档:
C# Byte数组操作-C/S开发框架
C# LINQ 找出两个列表数组中不存在于某个list的元素
C# 将数组、集合、可枚举类型转换成逗号分隔的字符串(String.Join)
标签:C#.Net组件开发 - 设计时持久化对象数组
C#转换IList对象数组为byte数组.然后通过WebService传递
读取XML 数据时,超出最大数组长度配额(16384),MaxArrayLength 属性
C# .NET 入门概念与知识点总结|C/S开发框架
C#/.NET 基础学习|C/S开发框架
OOP设计思想之教学设备系统.附UML图.(一)
什么是BI? 商业智能(BI,Business Intelligence)
C# 对象克隆 TOut ObjectHelper.Clone |C/S开发框架
MiniFramework蝇量开发框架技术架构介绍|C/S开发框架
一.业务单据窗体基类介绍|业务单据窗体|C/S快速开发框架|标准版V2.3|软件手册
CSFramework.DB.DbTools类下载|C/S开发框架
软件开发框架培训内容大全 | CSFrameworkV5.1旗舰版|培训大纲
业务单据窗体基类介绍|开发教程
C# Byte数组操作-C/S开发框架
C# LINQ 找出两个列表数组中不存在于某个list的元素
C# 将数组、集合、可枚举类型转换成逗号分隔的字符串(String.Join)
标签:C#.Net组件开发 - 设计时持久化对象数组
C#转换IList对象数组为byte数组.然后通过WebService传递
读取XML 数据时,超出最大数组长度配额(16384),MaxArrayLength 属性
C# .NET 入门概念与知识点总结|C/S开发框架
C#/.NET 基础学习|C/S开发框架
OOP设计思想之教学设备系统.附UML图.(一)
什么是BI? 商业智能(BI,Business Intelligence)
C# 对象克隆 TOut ObjectHelper.Clone |C/S开发框架
MiniFramework蝇量开发框架技术架构介绍|C/S开发框架
一.业务单据窗体基类介绍|业务单据窗体|C/S快速开发框架|标准版V2.3|软件手册
CSFramework.DB.DbTools类下载|C/S开发框架
软件开发框架培训内容大全 | CSFrameworkV5.1旗舰版|培训大纲
业务单据窗体基类介绍|开发教程
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
