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

ПолС Empty. 
ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° C#)

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

Π’ ΠΏΡ€ΠΎΡΡ‚ранствС ΠΈΠΌΠ΅Π½ System. Text сущСствуСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ класс StringBuilder, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ измСняСмыС (mutable) экзСмпляры строк, мСняя ΠΈΡ… Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°ΠΊΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°ΠΊ Append (Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ), Insert (Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ), Remove (ΡƒΠ±Ρ€Π°Ρ‚ΡŒ), Replace (Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ). Π’ ΡΡ‚ΠΎΠΌ контСкстС ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ new string{" Okay" ," All right" ," Deal?" } Π΄ΠΎ {" Okay" ," All right" ," Deal?" } ΡƒΠΆΠ΅… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ПолС Empty. ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° C#) (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

НабСритС ΠΊΠΎΠ΄, ΡƒΠΊΠ°Π·Π°Π² лишь имя класса, string. (с Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ). Бписок, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ IntelliSense, Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ статичСскиС поля ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса String.

ЕдинствСнноС ΠΏΠΎΠ»Π΅ класса String, доступноС внСшним классам, это статичСскоС ΠΏΠΎΠ»Π΅ Empty.

public static readonly string Empty;

ПолС Empty Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΡƒΡΡ‚ΡƒΡŽ (empty) строку. ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ.

string s=string.Empty;

Ρ€Π°Π²Π½ΠΎΡΠΈΠ»ΡŒΠ½ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ.

string s="";

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ доступа readonly

Π‘Π»ΡƒΠΆΠ΅Π±Π½ΠΎΠ΅ слово readonly Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ поля ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΎΡΡŒ Π»ΠΈΠ±ΠΎ нСпосрСдствСнно Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ, Π»ΠΈΠ±ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ конструктора (для статичСского поля это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ статичСский конструктор, Π° Π΄Π»Ρ нСстатичСского — конструктор экзСмпляра), Π½ΠΎ Π½ΠΈΠ³Π΄Π΅ Π±ΠΎΠ»Π΅Π΅. ΠŸΡ€ΠΈ отсутствии ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»Π΅ с Π΄ΠΎΡΡ‚ΡƒΠΏΠΎΠΌ readonly, ΠΊΠ°ΠΊ ΠΈ Π²ΡΠ΅ Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ поля класса, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΡ€ΠΈ создании экзСмпляра Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ — null для ссылочного Ρ‚ΠΈΠΏΠ° ΠΈ Π½ΠΎΠ»ΡŒ ΠΈΠ»ΠΈ false для Ρ‚ΠΈΠΏΠ°-значСния.

БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса System. String

ΠœΠ΅Ρ‚ΠΎΠ΄ IsNullOrEmpty Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли Π΅Π³ΠΎ строка-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ пустая ΠΈΠ»ΠΈ ссылка Π½Π° Π½Π΅Π΅ null. Π˜ΡΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅.

Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΏΡƒΠ» строк Π”Π²Π° статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Equals ΠΈ ReferenceEquals унаслСдованы классом String ΠΎΡ‚ ΡΠ²ΠΎΠ΅Π³ΠΎ нСпосрСдствСнного ΠΏΡ€Π΅Π΄ΠΊΠ° System.Object.

НабСритС Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Main класса StringTest ΠΊΠΎΠ΄.

string s1 = «ab», s2 = «ab» ;

C.WriteLine (string.ReferenceEquals (s1,s2));

C.ReadLine ();

Π•Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ True Π² Ρ‡Π΅Ρ€Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ? Π’Π΅Π΄ΡŒ описаны Π΄Π²Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… экзСмпляра Ρ‚ΠΈΠΏΠ° string, хотя ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡΠΌ! ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ ΠΏΠΎ ΡΡΡ‹Π»ΠΊΠ°ΠΌ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ это ΠΎΠ΄ΠΈΠ½ экзСмпляр?

ΠžΡ‚Π²Π΅Ρ‚ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ срСда Π² Ρ†Π΅Π»ΡΡ… экономии памяти ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ всС «Π΄ΠΎΡΠ»ΠΎΠ²Π½ΠΎ опрСдСляСмыС» Π² ΠΊΠΎΠ΄Π΅ экзСмпляры класса string Π² Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти — Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΏΡƒΠ» (intern pool). Если значСния постоянных строк ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚, Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π΅ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‚ся ΠΈ ΡΡΡ‹Π»ΠΊΠ° Π½Π° ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ строки оказываСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅. БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ IsInterned ΠΈ Intern класса String Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с ΡΡ‚ΠΈΠΌ ΠΏΡƒΠ»ΠΎΠΌ.

«ΠΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ» строк ΠΈ ΠΊΠ»Π°ΡΡ StringBuilder.

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ строку ΠΊΠΎΠ΄Π°.

s2 = s2 + string. Empty;

явно Π½Π΅ ΠΌΠ΅Π½ΡΡŽΡ‰Π΅Π³ΠΎ значСния s2. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ссылки Π½Π° s1 ΠΈ s2 Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Ρ‚Π°ΠΊΠΆΠ΅, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ сравнСния s1==s2 ΠΈΠ»ΠΈ string. Equals (s1,s2) Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, любоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ значСния строки Π²Π΅Π΄Π΅Ρ‚ фактичСски ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡŽ Π½ΠΎΠ²ΠΎΠ³ΠΎ экзСмпляра ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚ΠΈΠΏΠ° string. Π’ ΡΡ‚ΠΎΠΌ смыслС экзСмпляры Ρ‚ΠΈΠΏΠ° string ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡ‹ΠΌΠΈ (immutable) — любая ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ экзСмпляр строки ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡŽ Π½ΠΎΠ²ΠΎΠ³ΠΎ экзСмпляра.

Π’ ΠΏΡ€ΠΎΡΡ‚ранствС ΠΈΠΌΠ΅Π½ System. Text сущСствуСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ класс StringBuilder, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ измСняСмыС (mutable) экзСмпляры строк, мСняя ΠΈΡ… Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°ΠΊΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°ΠΊ Append (Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ), Insert (Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ), Remove (ΡƒΠ±Ρ€Π°Ρ‚ΡŒ), Replace (Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ).

ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ строк БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Copy класса string создаСт Ρ‚ΠΎΡ‡Π½ΡƒΡŽ копию экзСмпляра строки с Π΄Ρ€ΡƒΠ³ΠΎΠΉ ссылкой. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρƒ, скаТСм, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ.

C.WriteLine (string.ReferenceEquals (s1, string. Copy (s1)));

ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ вСрсии ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Concat (ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ) Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ строку ΠΈΠ· ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² — ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… строк ΠΈ ΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹Ρ… прСдставлСний Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ДСйствиС Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° слоТСния. Π˜ΡΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Π΅Ρ€ΡΠΈΡŽ «3 строки».

C.WriteLine (string.Concat («Hello», «C#», «!»));

ΠΈΠ»ΠΈ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ, «4 ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°» (Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°).

C.WriteLine (string.Concat (2,0,0,5));

Π”Π²Π΅ вСрсии ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Join ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ строку ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° (ΠΈΠ»ΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° массива) Π΄Ρ€ΡƒΠ³ΠΈΡ… строк, вставляя ΠΌΠ΅ΠΆΠ΄Ρƒ элСмСнтами массива строку-сСпаратор. НапримСр, ΠΊΠΎΠ΄.

C.WriteLine (string.Join («!!!», new string[]{" Okay" ," All right" ," Deal?" })); Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ строку.

Okay!!!All right!!! Deal?

Π’Ρ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Join являСтся массив строк string[] любого Ρ€Π°Π·ΠΌΠ΅Ρ€Π° — Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚ΠΈΠΏ, ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Main.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ new string[]{" Okay" ," All right" ," Deal?" }.

создаСт экзСмпляр массива ΠΈΠ· Ρ‚Ρ€Π΅Ρ… строк (Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ конструктор) ΠΈ.

заполняСт Π΅Π³ΠΎ (ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚) строками (элСмСнтами массива), пСрСчисляСмыми Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобках.

Π’ ΡΡ‚ΠΎΠΌ контСкстС ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ new string[]{" Okay" ," All right" ," Deal?" } Π΄ΠΎ {" Okay" ," All right" ," Deal?" } ΡƒΠΆΠ΅ нСльзя, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ описании массива. Π’Π΅Π΄ΡŒ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС созданный экзСмпляр являСтся ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

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