Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «ПолноС руководство. Π‘# 4.0Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 37

Автор Π¨ΠΈΠ»Π΄Ρ‚ Π“Π΅Ρ€Π±Π΅Ρ€Ρ‚

Как ΠΈ ΠΏΡ€ΠΈ создании экзСмпляра класса, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π²Ρ‹ΡˆΠ΅ объявлСниС массивамоТно Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Π΄Π²Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°. НапримСр:int[] sample;sample = new int[10];

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС пСрСмСнная sample Π½Π΅ ссылаСтся Π½Π° ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ физичСский ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° создаСтся Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅. И лишь послС выполнСниявторого ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° эта пСрСмСнная ссылаСтся Π½Π° массив.

Доступ ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ элСмСнту массива осущСствляСтся ΠΏΠΎ индСксу: ИндСкс ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ элСмСнта Π² массивС. Π’ языкС C# индСкс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта всСх массивовоказываСтся Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ. Π’ частности, массив sample состоит ΠΈΠ· 10 элСмСнтов с индСксами ΠΎΡ‚ 0 Π΄ΠΎ 9. Для индСксирования массива достаточно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ³ΠΎ элСмСнта Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках. Π’Π°ΠΊ, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт массива sample обозначаСтся ΠΊΠ°ΠΊsample [0], Π° послСдний Π΅Π³ΠΎ элСмСнт β€” ΠΊΠ°ΠΊ sample[9]. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ всС 10 элСмСнтов массива sample.// ΠŸΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив.using System;class ArrayDemo { static void Main() { int[] sample = new int[10]; int i; for(i = 0; i < 10; i = i+1) sample[i] = i; for(i = 0; i < 10; i = i+1) Console.WriteLine("sample[" + i + "]: " + sample[i]); }}

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ получаСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.sample[0]: 0sample[1]: 1sample[2]: 2sample[3]: 3sample[4]: 4sample[5]: 5sample[6]: 6sample[7]: 7sample[8]: 8sample[9]: 9

БхСматичСски массив sample ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

ПолноС руководство. Π‘# 4.0 - _10.jpg

ΠœΠ°ΡΡΠΈΠ²Ρ‹ часто ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΄Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ с большим числом взаимосвязанных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. НапримСр,Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ выявляСтся срСднСС арифмСтичСскоС ряда Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ,хранящихся Π² массивС nums, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ цикличСски ΠΎΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ†ΠΈΠΊΠ»Π° for.// Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ срСднСС арифмСтичСскоС ряда Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.using System;class Average { static void Main() { int[] nums = new int[10]; int avg = 0; nums[0] = 99; nums[1] = 10; nums[2] = 100; nums[3] = 18; nums[4] = 78; nums[5] = 23; nums[6] = 63; nums[7] = 9; nums[8] = 87; nums[9] = 49; for(int i=0; i < 10; i++) avg = avg + nums[i]; avg = avg / 10; Console.WriteLine("Π‘Ρ€Π΅Π΄Π½Π΅Π΅: " + avg); }}

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.Π‘Ρ€Π΅Π΄Π½Π΅Π΅: 53Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ массива

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния Π±Ρ‹Π»ΠΈ Π·Π°Π΄Π°Π½Ρ‹ для элСмСнтов массива nums Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π² дСсяти ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… присваивания. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ,такая инициализация массива ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°, Π½ΠΎ Ρ‚ΠΎ ΠΆΠ΅ самоС ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒΠ½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅. Π’Π΅Π΄ΡŒ массивы ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ. НиТСпривСдСна общая Ρ„ΠΎΡ€ΠΌΠ° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива:Ρ‚ΠΈΠΏ[] имя_массива = {vall, val2, val3, ..., valN};

Π³Π΄Π΅ val1-valN ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ ΠΈ ΠΏΠΎ порядку индСксирования. Для хранСния инициализаторовмассива Π² C# автоматичСски распрСдСляСтся достаточный объСм памяти. А Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ new явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΡ‚ΠΏΠ°Π΄Π°Π΅Ρ‚ сама собой. Π’ качСствСпримСра Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‰Π΅ΠΉ срСднССарифмСтичСскоС.// Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ срСднСС арифмСтичСскоС ряда Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.using System;class Average { static void Main() { int[] nums = { 99, 10, 100, 18, 78, 23, 63, 9, 87, 49 }; int avg = 0; for(int i=0; i < 10; i++) avg = avg + nums[i]; avg = avg / 10; Console.WriteLine("Π‘Ρ€Π΅Π΄Π½Π΅Π΅: " + avg); }}

Π›ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ массива ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ new, хотя особой надобности Π² этом Π½Π΅Ρ‚. НапримСр, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° считаСтся Π²Π΅Ρ€Π½Ρ‹ΠΌ, Π½ΠΎ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ массива nums Π² упомянутой Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.int[] nums = new int[] { 99, 10, 100, 18, 78, 23, 63, 9, 87, 49 };

НСсмотря Π½Π° свою ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ, Ρ„ΠΎΡ€ΠΌΠ° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ массива с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ newоказываСтся ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π² Ρ‚ΠΎΠΌ случаС, Ссли Π½ΠΎΠ²Ρ‹ΠΉ массив присваиваСтся ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ссылки Π½Π° массив. НапримСр:int[] nums;nums = new int[] { 99, 10, 100, 18, 78, 23, 63, 9, 87, 49 };

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС пСрСмСнная nums ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ ΠΈ инициализируСтся Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ.

И послСднСС Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ массива Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΠ²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½ΠΎ этот Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с числом ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ². Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ способ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ массива nums.int[] nums = new int[10] { 99, 10, 100, 18, 78, 23, 63, 9, 87, 49 );

Π’ этом объявлСнии Ρ€Π°Π·ΠΌΠ΅Ρ€ массива nums задаСтся Ρ€Π°Π²Π½Ρ‹ΠΌ 10 явно.БоблюдСниС Π³Ρ€Π°Π½ΠΈΡ† массива

Π“Ρ€Π°Π½ΠΈΡ†Ρ‹ массива Π² C# строго ΡΠΎΠ±Π»ΡŽΠ΄Π°ΡŽΡ‚ΡΡ. Если Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ массива Π½Π΅ Π΄ΠΎΡΡ‚ΠΈΠ³Π°ΡŽΡ‚ΡΡΠΈΠ»ΠΈ ΠΆΠ΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‚ΡΡ, Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² этом, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΡƒΡŽ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‚ΡΡ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ массива.// ΠŸΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ Π³Ρ€Π°Π½ΠΈΡ† массива.using System;class ArrayErr { static void Main() { int[] sample = new int[10]; int i; // Π’ΠΎΡΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ Π³Ρ€Π°Π½ΠΈΡ† массива. for(i = 0; i < 100; i = i+1) sample[i] = i; }}

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ i достигаСт 10, Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ситуация Ρ‚ΠΈΠΏΠ° IndexOutOfRangeException, связанная с Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ индСксирования массива, ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ. (ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуациях ΠΈ ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Π² Π³Π»Π°Π²Π΅ 13.)ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ‡Π°Ρ‰Π΅ всСго ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы, хотя ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ ΠΈ Ρ€Π΅Π΄ΠΊΠΈ. ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌ называСтся Ρ‚Π°ΠΊΠΎΠΉ массив, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ отличаСтсядвумя ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ измСрСниями, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ доступ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту Ρ‚Π°ΠΊΠΎΠ³ΠΎ массиваосущСствляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Π΄Π²ΡƒΡ… ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ индСксов.Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ Ρ„ΠΎΡ€ΠΌΠΎΠΉ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива являСтся Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив. ΠœΠ΅ΡΡ‚ΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ любого элСмСнта Π² Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠΌ массивС обозначаСтся двумя индСксами. Вакоймассив ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π½Π° строки ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ индСкс,Π° Π½Π° столбцы β€” Π΄Ρ€ΡƒΠ³ΠΎΠΉ.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкС ΠΊΠΎΠ΄Π° ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив integer Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ10Γ—20.int[,] table = new int[10, 20];

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ особоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° объявлСниС этого массива. Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΎΠ±Π° Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ запятой. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части этого объявлСния синтаксичСскоС ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅[,]

ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ создаСтся пСрСмСнная ссылки Π½Π° Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив. Если ΠΆΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒ распрСдСляСтся для массива с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° new, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ синтаксичСскоС ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.int[10, 20]

Π’ Π΄Π°Π½Π½ΠΎΠΌ объявлСнии создаСтся массив Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ 10Γ—20, Π½ΠΎ ΠΈ Π² этом случаС Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ запятой.

Для доступа ΠΊ элСмСнту Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива слСдуСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠ±Π° индСкса, Ρ€Π°Π·Π΄Π΅Π»ΠΈΠ²ΠΈΡ… запятой. НапримСр, Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкС ΠΊΠΎΠ΄Π° элСмСнту массива table с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ мСстополоТСния (3,5) присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 10.table[3, 5] = 10;

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π±ΠΎΠ»Π΅Π΅ наглядный ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² Π²ΠΈΠ΄Π΅ нСбольшой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉΠ΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив сначала заполняСтся числами ΠΎΡ‚ 1 Π΄ΠΎ 12, Π° Π·Π°Ρ‚Π΅ΠΌ выводится Π΅Π³ΠΎ содСрТимоС.// ΠŸΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив.using System;class TwoD { static void Main() { int t, i; int[,] table = new int[3, 4]; for(t=0; t < 3; ++t) { for(i=0; i < 4; ++i) { table[t,i] = (t*4)+i+1; Console.Write(table[t,i] + " "); } Console.WriteLine(); } }}

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ элСмСнт массива table[0,0] Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1, элСмСнтмассива table[0,1] β€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 2, элСмСнт массива table[0,2] β€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 3 ΠΈ Ρ‚.Π΄.А Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта массива table[2,3] окаТСтся Ρ€Π°Π²Π½Ρ‹ΠΌ 12. На рис. 7.1 показаносхСматичСски располоТСниС элСмСнтов этого массива ΠΈ ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

ПолноС руководство. Π‘# 4.0 - _11.jpg

Рис. 7.1. БхСматичСскоС прСдставлСниС массива table, созданного Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ TwoD

Π‘ΠžΠ’Π•Π’Π•ΡΠ»ΠΈ Π²Π°ΠΌ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π‘, C++ ΠΈΠ»ΠΈ Java, Ρ‚ΠΎ Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΠ²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹, объявляя ΠΈΠ»ΠΈ организуя доступ ΠΊ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивам Π² Π‘#. Π’ этих языкахпрограммирования Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ массива ΠΈ индСксы ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… квадратныхскобках, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π² C# ΠΎΠ½ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ запятой.ΠœΠ°ΡΡΠΈΠ²Ρ‹ Ρ‚Ρ€Π΅Ρ… ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ