C#基础知识整理:基础知识(14) 数组
发布日期:2021-11-07 06:40:59 浏览次数:10 分类:技术文章

本文共 5179 字,大约阅读时间需要 17 分钟。

无论哪种语言,肯定会有集合的概念。而最简单,最直观的集合应该就是数组了,数组是在内存中连续的一段空间。看看C#中数组

的定义。

1、int[] intArry ;
 intArry= new int[6];
 这里声明了一个int数组类型变量intArry,并保存一个具有6个单元的int数组对象;
 int[,] intArry2 = new int[3, 4];
 声明一个int二维数组类型变量,并初始化一个3行4列的数组对象;
 int[][] intArry3 = new int[9][];
 声明一个数组单元为int数组类型的数组变量,每个数组元素是一个int数组类型的对象引用。
 因为是面向对象语言,上面提到了引用和对象。其实:
 1、.net Frameword数组不是一种单纯的数据结构,而是一个类型,叫数组类型;
 2、.net Framework中的数组变量保存着引用到数组类型对象的引用,也就是说数组是一个对象。
所有.net Framework数组(int[],string[],object[])都是从Array继承的子类。一般不直接使用Array类,因为.net Framework下

的各类语言,当然也包括C#,将数组对象映射为各自的特殊语法了,比如int[],string[]。

数组主要有两个各属性:索引和长度,也就是index和length,索引用于访问数组对象中的元素,长度也就是数组的长度。
看一段联系代码:

public class MyArray    {        ///         /// 定义数组测试        ///         public void TestInt()        {            int[] intArry1 = null;            intArry1 = new int[6];            int[,] intArry2 = new int[3, 4];            int[][] intArry3 = new int[9][];        }                ///         /// 值类型数组转引用类型数组测试        ///         ///         /// 
public static object[] Int32ToArrayOfObject(int[] array) { object[] objArray = new object[array.Length]; for (int i = 0; i < array.Length; i++) { objArray[i] = array[i]; } return objArray; } /// /// 数组的主要特性测试 /// public static void MainTest() { //声明一个包含是个元素的字符串型数组 string[] sArray = new string[10]; //访问数组 //赋值 for (int i = 0; i < sArray.Length; i++) { sArray[i] = @"string" + i; } ConsoleToClientString(sArray); //另一种方式声明数组,所谓的枚举法 sArray = new string[] { "TestString0", "TestString1", "TestString2" }; ConsoleToClientString(sArray); //数组复制 string[] newSArray = sArray.Clone() as string[]; ConsoleToClientString(newSArray); //使用Array的CreateInstance方法声明10元素的整形数组 int[] intArray = Array.CreateInstance(typeof(int), 10) as int[]; for (int i = 0; i < intArray.Length; i++) { intArray[i] = i; } ConsoleToClientInt(intArray); //数组之间的复制,指定位置,指定长度 int[] newIntArray = new int[20]; Array.Copy(intArray, 3, newIntArray, 4, intArray.Length - 3); ConsoleToClientInt(newIntArray); object[] objArray = sArray; ConsoleToClientObject(objArray); objArray = Int32ToArrayOfObject(intArray); ConsoleToClientObject(objArray); //数组的数组 int[][] intArrayArray = new int[9][]; Console.WriteLine("数组长度:" + intArrayArray.Length); //赋值 for (int i = 1; i < 10; i++) { intArrayArray[i - 1] = new int[i]; for (int j = 1; j <= i; j++) { intArrayArray[i - 1][j - 1] = i * j; } } ConsoleToClientArrayArrayInt(intArrayArray); //二维数组 int[,] intArray2D = new int[9, 9]; Console.WriteLine(string.Format("二维数组 长度:{0},维数:{1}*{2}", intArray2D.Length, intArray2D.GetLength(0), intArray2D.GetLength(1))); for (int i = 1; i < 10; i++) { for (int j = 1; j <= i; j++) { intArray2D[i - 1, j - 1] = i * j; } } int count = 0; foreach (int item in intArray2D) { if (item > 0) { Console.Write("{0,2}", item); } if (++count >= 9) { Console.WriteLine(); count = 0; } } } static void ConsoleToClientArrayArrayInt(int[][] intArrayArray) { foreach (int[] item1 in intArrayArray) { foreach (int item2 in item1) { Console.Write("{0,2}", item2); } Console.WriteLine(); } Console.WriteLine(); } static void ConsoleToClientString(string[] sArray) { foreach (string item in sArray) { Console.Write(item + @","); } Console.WriteLine(); } static void ConsoleToClientInt(int[] intArray) { foreach (int item in intArray) { Console.Write(item + @","); } Console.WriteLine(); } static void ConsoleToClientObject(object[] objArray) { foreach (object item in objArray) { Console.Write(item.ToString() + @","); } Console.WriteLine(); } }

调用

class Program    {        static void Main(string[] args)        {            MyArray.MainTest();            Console.ReadLine();        }    }

结果

由上可以知道:
数组有引用类型数组和值类型数组,对于引用类型数组,元素用于保存对象的引用,初始化值为null;对于值类型数组,元素保存

对象的值,对于数字类型初始化值为0。

数组有维度,但是多维数组和数组的数组是不同的概念,intArrayArray和intArray2D是不同的。数组的数组表示一个m*n的行列式

,多维数组则是每个元素都是一个数组对象的数组。

数组和其他集合类一样都是是实现了ICollection接口,都具有枚举和迭代功能。

代码下载:

转载地址:https://blog.csdn.net/yysyangyangyangshan/article/details/8065556 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:C#基础知识整理:基础知识(15) ICollection、迭代及泛型
下一篇:程序与生活:忘记目标你才能达到目标

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月20日 01时39分01秒