• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

c# 搞代码 4年前 (2022-01-09) 20次浏览 已收录 0个评论

无论哪种语言,肯定会有集合的概念。而最简单,最直观的集合应该就是数组了,数组是在内存中连续的一段空间。看看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();        }    }

结果

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

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

,多维数组则是每个元素都是一个数组对象的数组。本文来源gao($daima.com搞@代@#码(网
数组和其他集合类一样都是是实现了ICollection接口,都具有枚举和迭代功能。

以上就是C#基础知识整理:基础知识(14) 数组的内容,更多相关内容请关注搞代码(www.gaodaima.com)!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:C#基础知识整理:基础知识(14) 数组

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址