نظرسنجی
بیشترین استفاده شما از اینترنت در چه زمینه ای است؟






 
خروجی RSS

String Transitivity - String Interning


29 مهر 1390

csharpیکی از ویژگی های تساوی در ریاضیات، ویژگی تعدی (Transitivity)  می باشد، به عبارتی اگر A=B و B=C باشد، بنابراین A=C نیز خواهد بود. این قانون به صورت کلی در C# یا سایر زبان های برنامه نویسی نیز صدق می کند، اما آیا همیشه و در همه ی موارد اینچنین است؟

به طور مثال کد زیر را در نظر بگیرید:

object obj = "Int32";
string str1 = "Int32";
string str2 = typeof(int).Name;
Console.WriteLine(obj == str1); // true
Console.WriteLine(str1 == str2); // true
Console.WriteLine(obj == str2); // false !?

همانطور که مشاهده می کنید با اینکه سه متغیر دارای مقادیر یکسانی می باشند، اما رابطه ی تعدی در مورد آن ها صدق نمی کند و عبارت سوم مقدار false بر می گرداند. جالبه نه؟

Covariance و Contravariance در C# 4.0


25 مرداد 1390

واریانس یکی از قابلیت هایی است که در C# 4.0 به این زبان اضافه شد که خوب شاید تا به حال به عدم پشتیبانی از آن در نسخه های قبلی C# هم برخورد نکرده باشید. به طور مثال کد زیر را در نظر بگیرید:

IList<string> strings = new List<string>();
IList<object> objects = strings;

در نگاه اول کد بالا صحیح به نطر میاد چون کلاس string از کلاس object  مشتق شده و می توان شی کلاس مشتق شده را به کلاس پایه نسبت داد اما کامپایلر از خط دوم کد خطا می گیرد.

اول 1 Last