C#基础知识整理:基础知识(14) 数组

发布时间:2020-06-18 12:47:06 作者:yangyoushan
来源:网络 阅读:242

无论哪种语言,肯定会有集合的概念。而最简单,最直观的集合应该就是数组了,数组是在内存中连续的一段空间。看看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      {          /// <summary>          /// 定义数组测试          /// </summary>          public void TestInt()          {              int[] intArry1 = null;                intArry1 = new int[6];                int[,] intArry2 = new int[3, 4];                int[][] intArry3 = new int[9][];          }                    /// <summary>          /// 值类型数组转引用类型数组测试          /// </summary>          /// <param name="array"></param>          /// <returns></returns>          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;          }          /// <summary>          /// 数组的主要特性测试          /// </summary>          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();          }      }


结果

C#基础知识整理:基础知识(14) 数组
由上可以知道:
数组有引用类型数组和值类型数组,对于引用类型数组,元素用于保存对象的引用,初始化值为null;对于值类型数组,元素保存

对象的值,对于数字类型初始化值为0。
数组有维度,但是多维数组和数组的数组是不同的概念,intArrayArray和intArray2D是不同的。数组的数组表示一个m*n的行列式

,多维数组则是每个元素都是一个数组对象的数组。
数组和其他集合类一样都是是实现了ICollection接口,都具有枚举和迭代功能。

代码下载:http://download.csdn.net/detail/yysyangyangyangshan/4640445

推荐阅读:
  1. JavaScript基础知识
  2. C#基础知识整理:基础知识(15) ICollection、迭代及泛型

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

语言

上一篇:IOS 标签按钮的选择

下一篇:C#倒序输出字符

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》