۱۳۸۹ فروردین ۲۷, جمعه

C# 4 is not .Net 4

خوشبختانه بر خلاف انتظاری که داشتیم. برنامه هایی که با نسخه 4 از زبان #C نوشته می شوند، می توانند به صورتی نوشته و کامپایل شوند که برای اجرا مستلزم وجود همین نسخه از .Net Framework نباشند. برای مثال یک برنامه با C# 4.0 نوشته شود که بر روی .Net 3.5 اجرا شود.

وقتی در C# 4.0 از ویژگی های Named and Optional Parameters که به تازگی در نسخه 4 آمده است، استفاده شود، مثلا وقتی یک متد به این صورت تعریف شود:

public static void Test(int a, int b = 2, int c = 5)

در حالی که Traget Framework روی .Net 3.5 تنظیم شده باشد، خروجی برنامه بر روی .Net 3.5 بدون هیچ مشکلی و بدون نیاز به نصب .Net 4.0 اجرا می شود. بنابر این با خیال آسوده از ویژگی Named and Optional Parameters در C# 4.0 استفاده کنید و لذت ببرید.

البته در مورد dynamic اوضاع به همین ترتیب نیست، برای استفاده از آن باید از اسمبلی Microsoft.CSharp نسخه 4.0 استفاده کرد. و همینطور در مورد Covariant و Contravariant نیز به همین منوال است.

پی نوشت 1: با توجه به اینکه ویژگی Optional Parameter در C/C++ وجود داشت و جای خالی آن از ابتدا در #C حس می شد، می توان به طراحان این زبان خرده گرفت که اگر قرار بود این ویژگی اضافه شود چرا از ابتدا اضافه نشد؟ که البته دو حالت بیشتر وجود ندارد؛ 1. شیطنت های سیاسی و اقتصادی 2. اشتباه انسانی. در هر حال همین الان هم دیر نیست، دستشان درد نکند.

پی نوشت 2: هر چند، در کل! چون .Net 4.0 حجمی در حدود 45 مگا بایت دارد، مطمئناً استفاده از همین Framework خیلی بهتر و آبرومندتر است.

پی نوشت 3: این پست بعد از تعدادی آزمایش برای نوع dynamic و covariant و contravariant به کلی ویرایش شده است.

۱ نظر: