رشته ها و برابری آنهابرای مقایسه ی دو متغیر (یا شی) می تونین از عملگر های «==» و «!=» استفاده کنید.
عملگر «==» دو طرف خود را چک می کند؛ اگر یک مقدار و نشانگر یک محل از حافظه بودند، مقدار true را بر می گرداند وگرنه false می دهد.
عملگر «=!» (تعجب مساوی) برخلاف «==» کار می کند. در صورتی که مقدار دو طرف یکسان باشد مقدار false برمی گرداند. و اگر مقدار دو طرف مساوی باشه، مقدار true برمی گرداند.
در مقایسه ی دو رشته باید به خاطر داشته باشیم که تساوی دو رشته کاراکتر کاراکتر بررسی می شود. پس کوچک و بزرگ بودن حروف هم مهم است. یعنی Hello با HELLO مساوی نیست.
نوع System.Text.StringBuilderنکته ی موجود در مورد اعضای این کلاس این است که زمانی که با آنها کار می کنید مستقیما داده های قبلی را تغییر می دهید به جای اینکه فضای دیگری با اطلاعات جدید دریافت کنید. می توانید توسط سازنده های این کلاس اشیایی با مقادیر اولیه مشخص ایجاد کنید، سپس مقادیر موجود در این اشیا را تغییر دهید. به کد های زیر و استفاده از این کلاس توجه کنید:
static void FunWithStringBuilder()
{
System.Text.StringBuilder Sb = new StringBuilder(“Default Value!”);
Sb.Append(“\n[new line is writing]”);
Sb.AppendLine(“And Line 2”);
Sb.Replace(“2”,”Again”);
Console.WriteLine(“Sb is so:{0} Written”,Sb.ToString());
}
خروجی برنامه که توسط دستور Console.WriteLine انجام می شه چیزی به صورت زیر است:
Sb is so: Default Value!
[new line is writing]
And Line Again Written
تبدیلات گسترش دهنده و محدود کنندهclass Program
{
static void Main(string[] args)
{
Console.WriteLine(“**Fun With Type Conversion **”;
// Add two shorts and print the result
short numb1=9, numb2=10;
Console.WriteLine(“{0} + {1} = {2}”, numb1, numb2, Add(numb1,numb2));
Console.ReadLine();
}
static int Add(int x, int y)
{return x + y;}
}
توجه کنید که متد Add انتظار دارد دو عدد int برایش ارسال شود. اما متد Main دو متغیر از نوع short برای آنها ارسال می کند. با این حال برنامه بدون اشکال کار می کند و مقدار 19 را بر می گرداند.
چون در اینجا عدد short از int کوچکتر است عمل تبدیل نوع، از نوع کوچکتر به نوع بزرگتر که Widening نامیده می شود، انجام می گردد. عمل گسترش به صورت خود به خودی و بدون از دست دادن اطلاعات انجام می گیرد.
البته بعضی اوقات عمل گسترش به نوع بزرگتر باعث ایجاد خطای کامپایلری می شود. مثلا فرض کنید در دو متغیر numb1 و numb2 اعداد بزرگی باشد؛ اگر حاصل جمع آنها را به جای نمایش دادن در متغیر دیگری از نوع short ذخیره کنید چون به صورت ضمنی عمل گسترش نوع انجام می شود و حاصل به نوع int تبدیل می گردد خطای کامپایلری دریافت می کنیم:
static void Main(string[] args)
{
Console.WriteLine(“**Fun With Type Conversion **”;
// Add two shorts and print the result
short numb1=30000, numb2=30000;
short answer = Add(numb1,numb2 ); //Error!
Console.WriteLine(“{0} + {1} = {2}”, numb1, numb2, answer);
Console.ReadLine();
}
خطای کامپایلری نوشته است: نمی توانید نوع int را به نوع short تبدیل کنید.
به عمل تبدیل نوع بزرگتر به نوع کوچکتر، Narrowing یا محدود کننده می گیم. این عمل همیشه خطای کامپایلری ایجاد میکند و کاری به این نداره که عدد توی بازه ی مورد نظر از نوع کوچکتر هست یا نه !
اگر مطمن هستیم نوع مورد نظر ما از نوع کوچکتر بیشتر نمی شود می شود نوع بازگشتی را مشخص کنیم:
short answer = (short)Add(numb1, numb2);
اگر مقدار خروجی رو در چنین حالتی چک کنید، مقدار -5536 رو می بینید که تعجب برانگیزه! در ادامه دلیل این موضوع رو بحث می کنیم
