Maison >développement back-end >Tutoriel C#.Net >Compilation des connaissances de base en C# : tableau des connaissances de base (14)

Compilation des connaissances de base en C# : tableau des connaissances de base (14)

黄舟
黄舟original
2017-02-11 13:34:441375parcourir

Quelle que soit la langue, il y aura certainement le concept d'ensembles. La collection la plus simple et la plus intuitive devrait être un tableau. Un tableau est un espace continu en mémoire. Jetez un œil à la définition du tableau

en C#.
1. int[] intArry;
intArry= new int[6];
Déclare ici une variable de type tableau int intArry et enregistre un objet tableau int avec 6 unités
int [,] intArry2 ; = new int[3, 4];
Déclarez une variable de type tableau bidimensionnel int et initialisez un objet tableau avec 3 lignes et 4 colonnes
int[][] intArry3 = new int[9 ][] ;
Déclarez une unité de tableau comme variable de tableau de type tableau int. Chaque élément du tableau est une référence d'objet de type tableau int.
Parce qu'il s'agit d'un langage orienté objet, les références et les objets sont mentionnés ci-dessus. En fait :
1. Le tableau .net Frameword n'est pas une simple structure de données, mais un type, appelé type de tableau ;
2. Les variables de tableau dans .net Framework stockent des références à des objets de type tableau ; , le tableau est un objet.
Tous les tableaux .net Framework (int[], string[], object[]) sont des sous-classes héritées d'Array. Généralement, la classe Array n'est pas utilisée directement, car divers langages

sous le .net Framework, dont C# bien sûr, mappent les objets tableau à leur propre syntaxe spéciale, telle que int[], string[] .
Les tableaux ont principalement deux attributs : index et length, c'est-à-dire index et length. L'index est utilisé pour accéder aux éléments de l'objet tableau, et la longueur est la longueur du tableau.
Regardez un morceau de code de contact :

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

    }

Appel

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

            Console.ReadLine();
        }
    }


Résultat


Comme vous pouvez le voir à partir de ce qui précède : Les tableaux ont des tableaux de type référence et des tableaux de type valeur. Pour les tableaux de type référence, les éléments sont utilisés pour enregistrer les références aux objets, et la valeur d'initialisation est nulle pour les tableaux de type valeur, les éléments enregistrent la valeur de
objets, et pour l'initialisation de type numérique La valeur est 0.

Les tableaux ont des dimensions, mais les tableaux multidimensionnels et les tableaux de tableaux sont des concepts différents. intArrayArray et intArray2D sont différents. Le tableau de tableaux représente un déterminant m*n


, et un tableau multidimensionnel est un tableau dans lequel chaque élément est un objet tableau.

Les tableaux, comme les autres classes de collection, implémentent l'interface ICollection et disposent de fonctions d'énumération et d'itération.


Ce qui précède est la compilation des connaissances de base en C# : Connaissances de base (14) Contenu du tableau Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn