ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² ΡƒΡ‡Ρ‘Π±Π΅, ΠΎΡ‡Π΅Π½ΡŒ быстро...
Π Π°Π±ΠΎΡ‚Π°Π΅ΠΌ вмСстС Π΄ΠΎ ΠΏΠΎΠ±Π΅Π΄Ρ‹

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ строками

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

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ присваивания для строк ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡŽ Π½ΠΎΠ²ΠΎΠ³ΠΎ экзСмпляра Ρ‚ΠΎΠΉ строки, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ссылаСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ справа ΠΎΡ‚ Π·Π½Π°ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ =. Π Π°Π½Π΅Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Π²ΡˆΠ°Ρ строка Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Π°ΡΡΠΎΡ†ΠΈΠΈΡ€ΡƒΠ΅Ρ‚ся с Π½ΠΎΠ²ΠΎΠΉ ссылкой. ASt+" содСрТит «+ 8 + aCh Π±ΡƒΠ΄Π΅Ρ‚ строка «Π‘Π°ΠΉΡ‚ содСрТит 8 System. Char». Π’ ΡΡ‚ΠΎΠΌ случаС ссылка Π½Π° ΠΌΠ°ΡΡΠΈΠ² Π°Π‘Π¬ приводится ΠΊ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Ρ‚ΠΈΠΏΠ° символьного массива (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ выраТСния aCh… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ строками (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π‘Ρ‚Ρ€ΠΎΠΊΠΈ языка C# ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для хранСния ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ символов, для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… отводится 2 Π±Π°ΠΉΡ‚Π°, ΠΈ ΠΎΠ½ΠΈ хранятся Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ Unicode (ΠΊΠ°ΠΊ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° char). Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ смыслС строка ΠΏΠΎΠ΄ΠΎΠ±Π½Π° ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΌΡƒ массиву с ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ Ρ‚ΠΈΠΏΠ° char. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ (символы строки) ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΌΠ΅Ρ€ΡƒΡŽΡ‚ΡΡ, начиная с 0. ПослСдний символ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ Π½Π° 1 мСньший Π΄Π»ΠΈΠ½Ρ‹ строки.

Для строковых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° опСрация индСксирования:

строка[ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅].

строка — это ссылка Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса string ΠΈΠ»ΠΈ строковая константа; ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ цСлочислСнным, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ Π²ΡΠ΅Π³Π΄Π° мСньшС Π΄Π»ΠΈΠ½Ρ‹ строки.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выраТСния с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ индСксирования — символ (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° char), Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹ΠΉ Π² Ρ‚ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ строки, Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ соотвСтствуСт индСксному Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ индСкса мСньшС нуля, Π° Ρ‚Π°ΠΊΠΆΠ΅ большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ Π΄Π»ΠΈΠ½Π΅ строки, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ситуация (гСнСрируСтся ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅).

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ индСксирования, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π½ΠΎΠ΅ ΠΊ ΡΡ‚Ρ€ΠΎΠΊΠ΅, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ праводопустимоС. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ (Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ) ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт строки.

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° рассмотрим Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ символьноС прСдставлСниС ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΉ Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΏΠΎ Π΅Π΅ Π΄Π΅ΡΡΡ‚ΠΈΡ‡Π½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 0 Π΄ΠΎ 15:

" 12 345 6789ABCDEF" [ind].

Если ind = = 13, Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ выраТСния Π±ΡƒΠ΄Π΅Ρ‚ 'D'.

Если Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ» foreach для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° элСмСнтов ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚ΠΈΠΏΠ° string, Ρ‚ΠΎ Π² Ρ†ΠΈΠΊΠ»Π΅ foreach ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ итСрационная пСрСмСнная Ρ‚ΠΈΠΏΠ° char. Π’ ΡΡ‚ΠΎΠΌ случаС строковый Π»ΠΈΡ‚Π΅Ρ€Π°Π» Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса string (прСдставляСмый ссылкой Π½Π° Ρ‚Π°ΠΊΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚) выступаСт качСствС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° с ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ Ρ‚ΠΈΠΏΠ° char. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ со ΡΡ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹ΠΌ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠΌ:

foreach (char numb in «0123»).

Console.Write («» + numb + + (int)numb);

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

0->48 1->49 2->50 3- >51.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ присваивания (=) для строк выполняСтся Π½Π΅ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для массивов. Когда ссылкС с Ρ‚ΠΈΠΏΠΎΠΌ массива присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ссылки Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ, ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ, массив, измСняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ссылки. Массив ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ становится доступСн для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ссылок.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ присваивания для строк ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡŽ Π½ΠΎΠ²ΠΎΠ³ΠΎ экзСмпляра Ρ‚ΠΎΠΉ строки, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ссылаСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ справа ΠΎΡ‚ Π·Π½Π°ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ =. Π Π°Π½Π΅Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Π²ΡˆΠ°Ρ строка Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Π°ΡΡΠΎΡ†ΠΈΠΈΡ€ΡƒΠ΅Ρ‚ся с Π½ΠΎΠ²ΠΎΠΉ ссылкой.

Π‘ΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ рис. 8.1, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° схСма, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ объявлСниям: char [] aCh = {'Π‘','ΠΈ','Ρ‚'}; char[] bCh = aCh;

string aSt = «Π‘Π°ΠΉΡ‚»; string bSt = aSt;

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ для ссылок Π½Π° массивы ΠΈ Π½Π° строки.

Рис. 8.1. ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ для ссылок Π½Π° ΠΌΠ°ΡΡΠΈΠ²Ρ‹ ΠΈ Π½Π° ΡΡ‚Ρ€ΠΎΠΊΠΈ

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сравнСния Π½Π° Ρ€Π°Π²Π΅Π½ΡΡ‚Π²ΠΎ = = ΠΈ Π½Π΅Ρ€Π°Π²Π΅Π½ΡΡ‚Π²ΠΎ ≠, примСняСмыС ΠΊ ΡΡΡ‹Π»ΠΊΠ°ΠΌ Π½Π° ΡΡ‚Ρ€ΠΎΠΊΠΈ, ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ символов Π² ΡΡ‚Ρ€ΠΎΠΊΠ°Ρ… (ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ для массивов ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ значСния ссылок). Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° дСмонстрируСт Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ массивами ΠΈ ΡΡ‚Ρ€ΠΎΠΊΠ°ΠΌΠΈ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ сравнСний:

char [] arl = {'А', 'Π³', 'Π³', 'Π°', 'Ρƒ'}; char [] ar2 = {'А', 'Π³', 'Π³'} 'Π°', 'Ρƒ'};

Console.WriteLine (arl == ar2); // False string stl = «String»; string st2 = «String» ;

Console.WriteLine (stl == st2); // True

ΠšΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΡŽ строк выполняСт опСрация +. НапримСр, послС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ опрСдСлСния ссылки aSt Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

aSt + «ΡΠΎΡΡ‚ΠΎΠΈΡ‚ ΠΈΠ· 8 Π±ΠΈΡ‚» .

ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ строки «Π‘Π°ΠΉΡ‚ состоит ΠΈΠ· 8 Π±ΠΈΡ‚» .

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ + ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π° ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΡŽ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²ΡƒΡ… строк, Π° Ρ‚Π°ΠΊΠΆΠ΅ строки ΠΈ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ автоматичСски (Π·Π° ΡΡ‡Π΅Ρ‚ нСявного обращСния ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ ToStringO) приводится ΠΊ Ρ‚ΠΈΠΏΡƒ string. НапримСр, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

aSt + «ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ «+ 8 + «Π±ΠΈΡ‚» .

Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ строку «Π‘Π°ΠΉΡ‚ содСрТит 8 Π±ΠΈΡ‚» .

Однако Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ выраТСния.

aSt+" содСрТит «+ 8 + aCh Π±ΡƒΠ΄Π΅Ρ‚ строка «Π‘Π°ΠΉΡ‚ содСрТит 8 System. Char[]». Π’ ΡΡ‚ΠΎΠΌ случаС ссылка Π½Π° ΠΌΠ°ΡΡΠΈΠ² Π°Π‘Π¬ приводится ΠΊ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Ρ‚ΠΈΠΏΠ° символьного массива (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ выраТСния aCh. ToStringO являСтся «System.Char[]»).

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ + ΠΊΠ°ΠΊ конкатСнация ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π°Π½Π³, Ρ‡Ρ‚ΠΎ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ +, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π°Ρ слоТСниС арифмСтичСских Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ выраТСния.

aSt + «ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ «+ 4 + 4 + «Π±ΠΈΡ‚» .

Π±ΡƒΠ΄Π΅Ρ‚ строка «Π‘Π°ΠΉΡ‚ содСрТит 44 Π±ΠΈΡ‚» .

По-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡƒ, это Π½Π΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠΆΠΈΠ΄Π°Π»ΠΈ. Но Π²Π΅Π΄ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€Π°Π½Π³Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ.

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