>  기사  >  백엔드 개발  >  C# 기초지식 편찬: 기초지식(14) 배열

C# 기초지식 편찬: 기초지식(14) 배열

黄舟
黄舟원래의
2017-02-11 13:34:441361검색

어느 언어를 막론하고 집합이라는 개념은 분명히 있을 겁니다. 가장 간단하고 직관적인 컬렉션은 배열이어야 합니다. 배열은 메모리의 연속적인 공간입니다. C#에서 배열

의 정의를 살펴보세요.
1.int[] intArry;
intArry= new int[6];
여기서는 int 배열 유형 변수 intArry를 선언하고 6개 단위의 int 배열 객체를 저장합니다. = new int[3, 4];
int 2차원 배열형 변수를 선언하고 3행 4열로 배열 객체를 초기화합니다.
int[][] intArry3 = new int[9 ][] ;
배열 단위를 int 배열 유형의 배열 변수로 선언합니다. 각 배열 요소는 int 배열 유형의 객체 참조입니다.
객체지향 언어이기 때문에 위에 레퍼런스와 객체를 언급했습니다. 사실:
1. .net Frameword 배열은 단순한 데이터 구조가 아니라 배열 유형이라고 하는 유형입니다.
2. .net Framework의 배열 변수는 배열 유형 개체에 대한 참조를 저장합니다. , 배열은 객체입니다.
모든 .net Framework 배열(int[], string[], object[])은 Array에서 상속된 하위 클래스입니다. 일반적으로 Array 클래스는 직접 사용되지 않습니다. 왜냐하면 C#을 포함한 .net Framework의 다양한 언어 ​​

는 배열 개체를 int[], string[]과 같은 고유한 특수 구문에 매핑하기 때문입니다. .

배열에는 주로 인덱스와 길이, 즉 인덱스와 길이라는 두 가지 속성이 있습니다. 인덱스는 배열 객체의 요소에 액세스하는 데 사용되며 길이는 배열의 길이입니다.
연락처 코드 보기:

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();
        }
    }

결과

위에서 알 수 있는 내용:
배열에는 참조 유형 배열과 값 유형 배열이 있습니다. 참조 유형 배열의 경우 요소는 개체의 참조를 저장하는 데 사용되며 값 유형 배열의 경우 요소는 값을 저장합니다.

객체이며, 숫자형의 경우 초기화 값은 0입니다.

배열에는 차원이 있지만 다차원 배열과 배열의 배열은 개념이 다르며, intArrayArray와 intArray2D는 다릅니다. 배열의 배열은 m*n 행렬식

을 나타내며, 다차원 배열은 각 요소가 배열 객체인 배열입니다.

배열은 다른 컬렉션 클래스와 마찬가지로 ICollection 인터페이스를 구현하고 열거 및 반복 기능을 갖습니다.

위 내용은 C# 기초 지식을 정리한 것입니다: 기초 지식(14) Array 컨텐츠에 대한 더 자세한 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.