zoukankan      html  css  js  c++  java
  • C#_数组

    

    数组是相同数据类型的元素按一定顺序排列的集合,然后用一个变量名进行命名。新建控制台程序,声明一个静态方法

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace DemoArray_1
    {
        class Program
        {
            static void Main(string[] args)
            {
                ArraysDemo();
                Console.ReadLine();
            }
            static void ArraysDemo()
            {
                //定义数组变量
                int[] myInts = new int[4];
                string[] booksOnDotNet = new string[100];
                //使用索引来填充数组
                myInts[0] = 110;
                myInts[1] = 120;
                myInts[2] = 114;
                myInts[3] = 119;
                
                foreach (int i in myInts)
                    Console.WriteLine(i);
                Console.WriteLine();
            }
        }
    }


    上面代码是使用构造函数来声明数组的,在声明的时候,并没有显式的填充数组值,此时数组中的每一项都会被设置成数据类型的默认值,比如Int类型的数组项默认值会被设置成0,bool类型数组则被设置成false

    数组初始化

    static void ArrayInit()
            {
                //使用new关键字来创建数组,未指定大小
                string[] ColorsArray = new string[] { "red", "green", "blue", "black" };
                Console.WriteLine("ColorsArray has {0} elemnets", ColorsArray.Length);
                //不使用new关键字,使用字面值初始化数组
                int[] VarArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
                Console.WriteLine("VarArray has {0} elements ", VarArray.Length);
                //使用new关键并指定大小,创建数组
                char[] CharArray = new char[3] { 'a', 'b', 'c' };
                Console.WriteLine("CharArray has {0}", CharArray.Length);
    
            }

    在用花括号创建数组时,不需要指定数组的大小,由花括号中的元素个数自动确定数组大小,另外new关键字也是可选的

    定义隐式类型本地数组

    static void DefinedImplicitArray()
            {
                //使用var关键字来定义隐式类型本地数组,注意数组元素必须是同一类型
                var myInt=new[] {110,120,114,119};
                Console.WriteLine("myInt is {0}", myInt.ToString());
    
            }


    需要注意是数组元素的类型必须是同一类型
    定义Object数组
    我们知道在.Net中所有内置类型的父类型都是System.Object类型,如果定义一个Object类型的数组,会发生什么?

    static void ObjcetsArray()
            {
                object[] myObjects = new object[3];
                myObjects[0] = 1;   //int类型
                myObjects[1] = "this is a demo"; //string类型
                myObjects[2] = true; //boolean类型
                foreach (object i in myObjects)
                    Console.WriteLine("Type is {0},Value is {1}", i.GetType(), i);
            }

    输出如下:



    从输出可以看出,使用object创建数组时,元素可以是任何类型,因为所有内置类型最终都会被转化成Object类型


    定义矩形数组


    除一维数组外,C#还支持两种多维数组:①矩形数组;②交错数组


    矩形数组:每行长度相同,如下面的二维数组


    static void RectArray()
            {
                int[,] MatrixArray;
                MatrixArray=new int[10,10];
                //填充数组
                for (int i = 0; i < 10; i++)
                    for (int j = 0; j < 10; j++)
                        MatrixArray[i, j] = i + j;
    
                //输出数组
                for (int i = 0; i < 10; i++)
                    for (int j = 0; j < 10; j++)
                        Console.Write(MatrixArray[i, j] + "	");
                Console.WriteLine();
                   
                
            }

    在上面的代码中使用"	" 用于插入一个水平制表符,并且使用Write输出,以获得6x6的矩形输出效果
    定义交错数组
    交错数组也就是数组中数组

     static void CrossArray()
            {
                //声明一个具有3个不同数组的数组
                int[][] myCrossArray = new int[3][];
                Console.WriteLine(myCrossArray.Length);  //获取的数组大小是3,即上面代码是声明三个数组
                //创建交错的数组
                for (int i = 0; i < myCrossArray.Length; i++)
                    myCrossArray[i] = new int[i + 7];  //第一个数组元素有7个,第二个数组元素8,依次类推
                //输出数组
                for(int i=0;i<3;i++)
                {
                    for(int j=0;j<myCrossArray[i].Length;j++)
                        Console.Write(myCrossArray[i][j]+"	");
                    Console.WriteLine();
                }
            }

    上面代码没有给交错数组 填充值,所以所有数组元素的默认值都为0,下图是上面两种数组运行结果


    用数组传参

     //向方法中传入数组
            static void PrintArray(int[] ints)
            {
                for (int i = 0; i < ints.Length; i++)
                    Console.WriteLine("{0}的索引是{1}", ints[i], i);
            }
            //从方法获取string类型的数组
            static string[] GetValueArray()
            {
                string[] varString = { "one", "two", "three" };
                return varString;
            }

    在Main()方法中,进行调用 
     //调用PrintArray方法
                int[] tels = { 110, 120, 114, 119 };
                PrintArray(tels);
                //调用GetValueArray,会获得一个数组
                string[] strs = GetValueArray();
                foreach (string s in strs)
                    Console.WriteLine(s);

    System.Array功能演示


    每一个被创建的数组都继承自Array基类。Array基类有很多常用功能,特别是静态成员,可以在类级别进行调用。


    下表是Array的常用成员

     static void SystemArray()
            {
                string[] strs = { "China" };
                //利用Length属性,输出数组元素
                for(int i=0;i<strs.Length;i++)
                {
                    Console.Write(strs[i] + "	");
                }
                //利用Reverse()方法反转数组
                Array.Reverse(strs);
                for (int i = 0; i < strs.Length; i++)  
                {
                    Console.Write(strs[i] + "	");
                }
    
                //待续
            }


  • 相关阅读:
    大爽Python入门教程 0-2 什么是IDE?python选什么IDE好?
    大爽Python入门教程 0-3 安装Atom与配置Python环境
    大爽Python入门教程 0-1 安装python
    HBase 过滤器 及shell 操作过滤器
    分布式ID生成方式(雪花算法)
    tidb 踩坑经验(转载)
    MYSQL ACID
    kafka什么时候会丢消息
    java 单例模式模式实现
    使用 GitHub 的十个最佳实践
  • 原文地址:https://www.cnblogs.com/tao-zi/p/3832579.html
Copyright © 2011-2022 走看看