ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΈ распаковка

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ПониманиС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΈ Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для примСнСния Ρ‚Π°ΠΊΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… срСдств ΠΊΠ°ΠΊ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. К Π½ΠΈΠΌ относится класс ArrayList (массив-список) ΠΈΠ· ΠΏΡ€ΠΎΡΡ‚ранства ΠΈΠΌΠ΅Π½ System.Collections. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ класса ArrayList Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях «Π²Π΅Π΄Π΅Ρ‚ сСбя» ΠΊΠ°ΠΊ массив. НапримСр, ΠΊ Π½Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠ° индСксация. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… ΠΎΡ‚ ΠΊΠ»Π°ΡΡΠ° Array, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ класса ArrayList ΠΌΠΎΠ³ΡƒΡ‚ расти… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΈ распаковка (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Когда Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ структурного Ρ‚ΠΈΠΏΠ° прСобразуСтся ΠΊ Ρ‚ΠΈΠΏΡƒ object ΠΈΠ»ΠΈ приводится ΠΊ Ρ‚ΠΈΠΏΡƒ Ρ‚ΠΎΠ³ΠΎ интСрфСйса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ структурой, выполняСтся опСрация ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ (boxing). Π­Ρ‚Π° опСрация выполняСтся автоматичСски ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° программиста.

Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ процСсс явного прСобразования ΠΈΠ· Ρ‚ΠΈΠΏΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² Ρ‚ΠΈΠΏ ссылок. ΠŸΡ€ΠΈ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ΅ создаСтся ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ся Π² ΠΊΡƒΡ‡Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° с Ρ‚ΠΈΠΏΠΎΠΌ значСния. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ слуТит ссылка Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΡƒΡ‡ΠΈ.

ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ являСтся распаковка (unboxing), ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° присваиваСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с Ρ‚ΠΈΠΏΠΎΠΌ значСния.

АвтоматичСская ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° выполняСтся Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° выполняСтся допустимоС присваиваниС ссылкС Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ссылочного Ρ‚ΠΈΠΏΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с Ρ‚ΠΈΠΏΠΎΠΌ значСния. Π’Π°ΠΊ ΠΊΠ°ΠΊ всС классы языка C# ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ±Ρ‰ΠΈΠΉ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс object, Ρ‚ΠΎ ΡΡΡ‹Π»ΠΊΠ΅ Ρ‚ΠΈΠΏΠ° object ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ экзСмпляра структуры. Π’ ΡΡ‚ΠΎΠΌ случаС выполняСтся автоматичСская ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π°Ρ Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° программиста. ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° — распаковка — автоматичСски Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅Ρ‚ся. Для распаковки Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ привСдСния Ρ‚ΠΈΠΏΠΎΠ².

Π‘ΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ относится Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡŽ, Π½ΠΎ ΠΈ ΠΊ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ ΠΊ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠΌΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ. Рассмотрим статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ с Ρ‚Π°ΠΊΠΈΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ:

static object reDouble (object obj).

ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ссылку Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° object ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ°. Π’Π½Π΅ΡˆΠ½Π΅ Π½ΠΈΡ‡Ρ‚ΠΎ Π½Π΅ ΠΏΡ€Π΅ΠΏΡΡ‚ствуСт ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ Π² ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ ΡΡ‚ΠΎΠΌΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ссылки Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ любого Ρ‚ΠΈΠΏΠ°. Однако Π² Ρ‚Π΅Π»Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² ΡΠΎΠΎΡ‚вСтствии с ΡΡ‚ΠΈΠΌ Ρ‚ΠΈΠΏΠΎΠΌ. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ структурный Ρ‚ΠΈΠΏ Structl с ΠΏΠΎΠ»Π΅ΠΌ Ρ… Ρ‚ΠΈΠΏΠ° double ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ с ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ Π²Ρ‹ΡˆΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ.

// 1510.cs — структуры, ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°, распаковка using System;

struct Structl // структурный Ρ‚ΠΈΠΏ

{

double x;

public double X { get { return x; } set { x = value; } }.

}

class Program.

{

static object reDouble (object obj).

{

if (obj is Structl).

{

Structl st = (Structl)obj; st. X = 2 * st. X; return st;

}

else.

Console.WriteLine («HeH3BecTHbiii Ρ‚ΠΈΠΏ!»);

return obj;

}

static void Main ().

{

Structl one = new StructlQ;

one.X = 4;

Structl two = (Structl)reDouble (one);

Console.WriteLine («one.X={0}; two. X={l}», one. X, two. X);

Console.WriteLine («(int)reDouble (55)={0}», (int)reDouble (55));

}

>

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

one.X=4; two. X=8 НСизвСстный Ρ‚ΠΈΠΏ!

(int)reDouble (55)=55.

ΠœΠ΅Ρ‚ΠΎΠ΄ reDouble () ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ‚ΠΈΠΏΠ° Structl, хотя Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ любого Ρ‚ΠΈΠΏΠ°. Если Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ Structl, ΠΌΠ΅Ρ‚ΠΎΠ΄ reDouble () выполняСт Π΅Π³ΠΎ распаковку ΠΈ ΡƒΠ΄Π²Π°ΠΈΠ²Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ поля double Ρ…. Если Ρ‚ΠΈΠΏ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΎΡ‚Π»ΠΈΡ‡Π΅Π½ ΠΎΡ‚ Structl, Ρ‚ΠΎ Ρ‚ΠΈΠΏ распознаСтся ΠΊΠ°ΠΊ нСизвСстный ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ возвращаСтся Π² Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ‹Π·ΠΎΠ²Π° Π² «ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΠΎΠΌ» Π²ΠΈΠ΄Π΅. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Main () ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ reDoubleQ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π΄Π²Π°ΠΆΠ΄Ρ‹ с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ².

ПониманиС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΈ Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для примСнСния Ρ‚Π°ΠΊΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… срСдств ΠΊΠ°ΠΊ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. К Π½ΠΈΠΌ относится класс ArrayList (массив-список) ΠΈΠ· ΠΏΡ€ΠΎΡΡ‚ранства ΠΈΠΌΠ΅Π½ System.Collections. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ класса ArrayList Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях «Π²Π΅Π΄Π΅Ρ‚ сСбя» ΠΊΠ°ΠΊ массив. НапримСр, ΠΊ Π½Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠ° индСксация. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… ΠΎΡ‚ ΠΊΠ»Π°ΡΡΠ° Array, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ класса ArrayList ΠΌΠΎΠ³ΡƒΡ‚ расти Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΈΡ… ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² увСличиваСтся, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΡΡ‚ΠΎΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ рост выполняСтся автоматичСски Π±Π΅Π· Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° программиста.

Но Π½Π΅ Π²ΡΠ΅ просто. Рассмотрим объявлСниС Ρ‚Π°ΠΊΠΎΠ³ΠΎ растущСго массива-списка:

using System. Collection;

ArrayList dinamo = new ArrayList (3);

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ объявлСна ссылка dinamo ΠΈ Π°ΡΡΠΎΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ с Π½Π΅ΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса ArrayList. Π’ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρƒ ArrayList () ΡƒΠΊΠ°Π·Π°Π½ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива-списка. МоТно ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ массива-списка, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ индСксы со Π·Π½Π°Ρ‡Π΅Π½ΠΈΡΠΌΠΈ 0, 1, 2. Однако ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠΉ:

dinamo [1] = 45.3; // ошибка Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ исполнСния

Π”Π°ΠΆΠ΅ Ссли Π² Π²Ρ‹Π·ΠΎΠ²Π΅ конструктора ΡƒΠΊΠ°Π·Π°Π½ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива-списка, ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ элСмСнтов Π² ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠΌ массивС-спискС НЕВ! ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса ArrayList ΠΎΡ‚ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ массива состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΌΠ°ΡΡΠΈΠ²-список элСмСнты Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²Π½Π°Ρ‡Π°Π»Π΅ занСсСны с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ нСстатичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Add () класса ArrayList.

Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

public virtual int Add (object value).

ΠœΠ΅Ρ‚ΠΎΠ΄ добавляСт Π² ΠΊΠΎΠ½Π΅Ρ† массива-списка элСмСнт, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ — порядковый Π½ΠΎΠΌΠ΅Ρ€ (индСкс) Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ элСмСнта. НумСрация элСмСнтов начинаСтся с Π½ΡƒΠ»Ρ.

Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° object, Ρ‚ΠΎ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ любого Ρ‚ΠΈΠΏΠ°. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π² ΠΎΠ΄ΠΈΠ½ массивсписок ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ элСмСнты Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ, нСобходимая для Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, выполняСтся автоматичСски. А Π²ΠΎΡ‚ ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ значСния элСмСнта массива-списка Π½ΡƒΠΆΠ½ΠΎ явно Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ распаковку, ΡƒΠ·Π½Π°Π² ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ ΠΈΠΌΠ΅Π΅Ρ‚ элСмСнт.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ создан массив-список, прСдставляСмый ссылкой ArrayList dynamo. Π—Π°Ρ‚Π΅ΠΌ Π² ΡΡ‚ΠΎΡ‚ массив-список Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ элСмСнты со Π·Π½Π°Ρ‡Π΅Π½ΠΈΡΠΌΠΈ Ρ‚ΠΈΠΏΠΎΠ² double, int ΠΈ Points, Π³Π΄Π΅ Points — ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Ρ‚ΠΈΠΏ, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΉ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΊΠ°ΠΊ структурный. ВСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

// 15_ll.cs — структуры ΠΈ ΠΌΠ°ΡΡΠΈΠ²-список Ρ‚ΠΈΠΏΠ° ArrayList using System;

using System. Collections; // Для ArrayList class Program {.

static void Main ().

{

ArrayList dinamo = new ArrayList (); dinamo. Add (4.8); dinamo. Add (new PointSQ); dinamo. Add (100);

Points ps = new PointSQ; ps. X = 10.2; dinamo. Add (ps); dinamo[l] = 1.23; foreach (object ob in dinamo) if (ob is Points).

Console.WriteLine («Struct: X={0}; Y={1}» ,.

((PointS)ob).X, ((PointS)ob).Y);

else.

if (ob is Double).

Console.WriteLine («Double: Value={0}» ,.

((double)ob) .ToStringQ);

>

}

struct Points // структурный Ρ‚ΠΈΠΏ

{

double x, Ρƒ;

public double X { get { return x; } set { x = value; } } public double Y { get { return y; } set { Ρƒ = value; } }.

}

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Double: Value=4,8 Double: Value=l, 23 Struct: X=10,2; Y=0.

Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Main () Π² ΠΌΠ°ΡΡΠΈΠ²-спискок dinamo занСсСны Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ€Π°Π·Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Ρ… элСмСнта. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ выраТСния с ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΠ΅ΠΉ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ присваиваниС Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ элСмСнту массива-списка:

dinamo[l] = 1.23;

ΠŸΠ΅Ρ€Π΅Π΄ этим присваиваниСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ элСмСнта dinamo [1] Π±Ρ‹Π» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ структуры Points.

ПослС размСщСния Π² ΠΌΠ°ΡΡΠΈΠ²Π΅-спискС dinamo Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… элСмСнтов эти элСмСнты ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ Π² Ρ†ΠΈΠΊΠ»Π΅ foreach. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ†ΠΈΠΊΠ»Π° ob ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ object. Π•ΠΌΡƒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ ссылки Π½Π° Ρ€Π°Π·Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Π΅ элСмСнты массива-списка. НСпосрСдствСнно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ‚ΠΈΠΏΠ° object для доступа ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ — Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° своя Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, Ρ‚. Π΅. свои Ρ‡Π»Π΅Π½Ρ‹, свои поля. Π’ Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π° условныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для распознавания Ρ‚ΠΈΠΏΠΎΠ². Π Π°ΡΠΏΠΎΠ·Π½Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΈΠΏΡ‹ double ΠΈ Points. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ провСряСмого условия Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… if ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ is.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ