کلاس String

رشته‌ها در سی شارپ با کلاس String سر و کار دارند. قبل از استفاده از رشته‌ها ابتدا باید فضای نام System را در ابتدای برنامه وارد کنید. برای ایجاد یک رشته چندین راه وجود دارد.

String str1;
str1 = "An example of a string.";

به این نکته توجه کنید که رشته‌ها را باید در داخل دابل کوتیشن (“”) قرار دهید. دابل کوتیشن به کامپایلر نشان می‌دهد که داده‌ای را که شما می‌خواهید در متغیر ذخیره کنید یک رشته است.

string myString; 
myString = "An example of a string.";

برای تعریف و مقداردهی به یک رشته می‌توان به صورت زیر عمل کرد:

string myString = "This is another string";

همچنین می‌توان از کلمه کلیدی new و سازنده System.String برای تخصیص یک مقدار به رشته استفاده کرد :

String myString = new String("This is a string.");
string myString  = new string("This is a string");

در دات نت رشته یک نوع ارجاعی است، اما بسیار شبیه به انواع مقداری رفتار می‌کند. به تکه کد زیر توجه کنید :

Button btn1 = new Button();
btn1.Text = "Button 1 ";
Button btn2 = btn1; // Assign address of btn1 to btn2

btn2.Text += " and Button 2";
Console.WriteLine(btn1.Text);
Console.WriteLine(btn2.Text);
Button 1 and Button 2
Button 1 and Button 2

ابتدا یک دکمه ایجاد کرده و نامان را btn1 می‌گذاریم و خاصیت Text آنرا برابر یک رشته قرار می‌دهیم. سپس ارجاع btn1 را برابر دکمه‌ای دیگر به نام btn2 قرار دهید. اکنون هر دو به یک دکمه یکسان وابسته می‌شوند. حال خاصیت Text مربوط به btn2 را به وسیله الحاق آن با رشته دیگر تغییر می‌دهیم. به این نکته توجه کنید btn2.Text شامل متن btn1 است چون هر دو به یک دکمه وابسته‌اند. بعد از تغییر، محتویات خاصیت Text هر دو دکمه را در خروجی چاپ می‌کنیم. نتیجه یکسان است. هنگامی که بخواهیم متن btn2 را اصلاح کنیم، متن btn2 هم تغییر می‌کند (در خروجی دستور WriteLine() مشاهده می‌کنید). اگر رشته‌ها واقعاً جزء انواع مرجع باشند، پس باید دو خط کد زیر رفتار یکسانی از خود نشان بدهند :

string str1 = "String 1";
string str2 = str1;

حال str1 و str2 باید به یک شیء اشاره کنند. اگر مقدار str2 را تغییر دهیم باید مقدار str1 نیز تغییر کند.

str2 += " and String 2";

اجازه بدهید مقادیر رشته‌ها را چاپ کنیم :

Console.WriteLine(str1);
Console.WriteLine(str2);
String 1
String 1 and String 2.

همانطور که می‌بینید مقادیر متفاوت هستند. مقدار str1 در str2 کپی شد. آن‌ها به یک نمونه مشابه اشاره نمی‌کنند. بنابراین اگر در str2 تغییری ایجاد کنید در str1 تأثیر نمی‌گذارد. یک رشته نمی‌تواند نوع مقداری باشد چون طول کاراکترهای تشکیل دهنده آن غیر قابل پیش بینی است.
یک رشته مجموعه‌ای از کاراکترها می‌باشد. کد زیر نحوه جدا سازی کاراکترهای یک رشته را به وسیله حلقه foreach نشان می‌دهد.

string str1 = "This is a string";
foreach (char c in str1)
{
   Console.WriteLine(c);
}
T
h
i
s

i
s

a

s
t
r
i
n
g

در حقیقت، نسخه دیگر سازنده System.String یک آرایه از نوع کاراکتر قبول می‌کند.

char[] charArray = { 'H', 'e', 'l', 'l', 'o' };

String myString = new String(charArray);

در درس آینده نحوه مقایسه و مرتب سازی رشته‌ها را نشان خواهیم داد.