ما الجديد في لغة C# 3.0؟
صفحة 1 من اصل 1
ما الجديد في لغة C# 3.0؟
السلام عليكم ورحمة الله وبركاته ...
اطلق قبل فترة الفجول ستديو Visual Studio.net 2008 . و أطلق معها النسخة الجديدة من لغة C# 3.0.
توجد تطويرات كثيرة في هذه النسخة و سوف اتحدث عنها في عدة مواضيع إن شاء الله تعالى.
اليوم سوف أتكلم عن التعريف الضمني للمتغيرات أو الـ Implicitly Typed Local Variables.
في السابق كنا لابد ان نحدد نوع المتغير عندما نريد استخدامه في لغة سي# ، مثل الطريقة التالية:
اطلق قبل فترة الفجول ستديو Visual Studio.net 2008 . و أطلق معها النسخة الجديدة من لغة C# 3.0.
توجد تطويرات كثيرة في هذه النسخة و سوف اتحدث عنها في عدة مواضيع إن شاء الله تعالى.
اليوم سوف أتكلم عن التعريف الضمني للمتغيرات أو الـ Implicitly Typed Local Variables.
في السابق كنا لابد ان نحدد نوع المتغير عندما نريد استخدامه في لغة سي# ، مثل الطريقة التالية:
int i = 5;
string s = "Hello";
double d = 1.0;
string s = "Hello";
double d = 1.0;
فالكود أعلاه قمنا بتعريف متغير من نوع int و آخر من نوع string و آخر من نوع double و لكن الكود التالي يعتبر ايضاً صحيح في لغة سي# 3.0.
var i = 5;
var s = "Hello";
var d = 1.0;
var s = "Hello";
var d = 1.0;
فالمتغير الأول i سيكون من نوع int لأننا اسندنا له القيمة 5 و الثاني s سيكون عبارة عن string لأننا اسندنا له قيمة string و هكذا لأننا قمنا بتعريفها من نوع var.
و عندما يعرف متغير من نوع var و تسند له قيمة int لا نستطيع اسناد string له مثلاً فيما بعد، مثل هذا المثال:
var i = 5;
i = "Hello"; // Error, can't assign string to int
i = "Hello"; // Error, can't assign string to int
فلغة سي# 3.0 أصبحت ذكية بالإمكان للتعرف على نوع المتغير عن طريق الجهة اليمنى للجملة Right Hand Side .
و لاستخدام هذه الطريقة في لغة سي# 3.0 لابد من توفر الشروط التاليه:
- عند استخدام متغير من نوع var لابد من اسناد قيمة ابتدائية له.
- القيمة الابتدائية لابد ان تكون تعبير رياضي.
- لا يمكن ان تكون القيمة الابتدائية null.
- لا يمكن تعريف اكثر من متغير في نفس الجملة.
- لا يمكن للمتغير ان ينسد إلى نفسه.
لذلك الأمثلة التالية ليست صحيحة:
var x; // Error, no initializer to infer type from
var y = {1, 2, 3}; // Error, collection initializer not permitted
var z = null; // Error, null type not permitted
var u = x => x + 1; // Error, lambda expressions do not have a type
var v = v++; // Error, initializer cannot refer to variable itself
var y = {1, 2, 3}; // Error, collection initializer not permitted
var z = null; // Error, null type not permitted
var u = x => x + 1; // Error, lambda expressions do not have a type
var v = v++; // Error, initializer cannot refer to variable itself
و لمزيد من التفاصيل يمكنك زيارة الموقع الرسمي للـMSDN.
صانع برامج- المدير العام
- عدد المساهمات : 415
0
تاريخ التسجيل : 05/04/2010
العمر : 39
الموقع : برامج x
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى