0

آموزش جامع Visual C#.NET

 
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 154065
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به: آموزش جامع Visual C#.NET
پنج شنبه 24 اردیبهشت 1394  3:33 PM

مقدمه

سی شارپ (C#) زبانی شیءگرا و سطح بالا (high level) از خانوادهٔ زبانهای چارچوب داتنت شرکت مایکروسافت است.

زبان #C، یک زبان برنامه نویسی چند الگویی است و منظم شده مدلهای تابعی، امری، عمومی، شی گرا و جز گرا میباشد. این زبان توسط ماکروسافت و جزئی از دات نت به وجود آمد و بعدا استانداردهای ECMAو ISO را نیز در بر گرفت. #C یکی از 44 زبان برنامه نویسی ای است که توسط Common Language Runtime از .NET Framework پشتیبانی میشوند و در همه جا به وسیله Microsoft Visual Studio شناخته میشود.

این زبان برپایه سادگی، مدرن بودن، همه منظوره و شی گرا بودن ساخته شد.Anders Hejlsberg، طراح زبان برنامه نویسی دلفی، سرپرستی تیم طراحان زبان #C را بر عهده داشت.این زبان دارای دستوری شی گرا مشابه ++C است و به شدت از زبانهای جاوا و دلفی تاثیر پذیرفته است.در ابتدا نام این زبان COOL بود که مخفف C like Object Oriented Language بود، هر چند در جولای 2000، زمانی که ماکروسافت پروژه را عمومی اعلام کرد، اسم آن به #C تغییر پیدا کرد.آخرین نسخه آن نسخه 3 است که از ویژوال استدیو 2008 استفاده میکند. نسخه بعدی 4 است که در دست ساخت است.


اهداف طراحی زبان

• استاندارد ECMA این اهداف طراحی زبان را برای #C بر آورده میسازد:. سی شارپ یک زبان برنامه سازی ساده،مدرن،برای اهداف عمومی و شی گرا است. به دلیل اهمیت داشتن موضوع نیرومندی و دوام و بهره وری برنامه نویس،زبان دارای چک کننده Strong Type ، چک کننده مرزهای آرایه، تشخیص حالتهایی که یک متغیر مقدار دهی اولیه نشده است،قابلیت انتقال کدها و Garbage Collection خودکار است. این زبان برای استفاده در اجزای توسعه نرم افزار برای دستیابی به مزایای سیستمهای توزیعی در نظر گرفته شدهاست. قابلیت انتقال برنامه نویس بسیار مهم است،خصوصاً برای آن دسته از برنامه نویسانی که با زبانهای C و C++ آشنا هستند. پشتیبانی از این زبان برای بین المللی شدن بسیار مهم است. زبان سی شارپ برای نوشتن برنامه ها برای سیستمهای تعبیه شده و میزبان در نظر گرفته شده است، از سیستم عاملهای پیچیده بسیار بزرگ گرفته تا توابع اختصاصی بسیار کوچک. هر چند برنامه های نوشته شده با #C طوری هستند که از لحاظ حافظه و پردازنده مورد نیاز مقرون به صرفه باشند، ولی خود زبان از لحاظ اندازه و کارایی به خوبی زبانهای C و اسمبلی نیست


تاریخچه

در سال 1999، شرکت سان اجازه استفاده از زبان برنامه نویسی جاوا را در اختیار ماکروسافت قرار داد تا در سیستم عامل خود از آن استفاده کند.جاوا در اصل به هیچ پلت فرم یا سیستم عاملی وابسته نبود، ولی ماکروسافت برخی از مفاد قرار داد را زیر پا گذاشت و قابلیت مستقل از سیستم عامل بودن جاوا را از آن برداشت.شرکت سان پروندهای علیه ماکروسافت درست کرد و ماکروسافت مجبور شد تا زبان شی گرای جدیدی با کامپایل جدید که به ++C شبیه بود را درست کند. در طول ساخت دات نت، کلاسهای کتابخانهای با زبان و کامپایلر SMC نوشته شدند.در سال 1999 آندرس هلزبرگ گروهی را برای طراحی زبانی جدید تشکیل داد که در آن زمان نامش Cool بود و همانند C بود با خواص شی گرایی. ماکروسافت در نظر داشت اسم این زبان را تا آخر Cool قرار دهد، ولی به دلیل مناسب نبودن برای اهداف تجاری این کار را نکرد. در ارائه و معرفی رسمی .NET در PDC در سال 2000 این زبان به سی شارپ تغییر نام یافت و کتابخانه کلاسها و runtime در ASP.NET به#C منتقل شدند. مدیر و سرپرست طراحان در ماکروسافت آندرس هلزبرگ بود که تجربه قبلی او در طراحی Framework و زبانهای برنامه سازی++Borland , Delphi, Turbo Pascal, Visual C به آسانی در دستورالعملهای سی شارپ قابل رویت است و به همان خوبی در هسته CLR.

ویژگیها

برخی از تفاوتهای زبان سی شارپ با C و ++C عبارتند از:

* هیچ تابع یا متغیر سراسری(Global) وجود ندارد، تمام متدها و اعضا بایستی در داخل کلاسها تعریف شوند.این امر ممکن است، هر چند برای استفاده از متغیرها و توابع عمومی باید از متدها و متغیرها در کلاسهای عمومی استفاده کرد.

* متغیرهای عمومی، بر خلاف C و ++C ، نمیتوانند بلاکهای پیوستی را در بر بگیرند.

* سی شارپ دارای یک نوع داده بولی است (bool).برخی از عبارتها مانند while و if که شرطی هستند، نیازمند یک عبارت نوع بولی هستند.همان طور که ++C نیز دارای نوع داده بولی است،این نوع داده به راحتی میتواند به یا از Integerها تبدیل شود، و عبارتی مانند (if(a نیازمند این امر است که a از یک نوع قابل تبدیل به bool یا اشاره گر باشد.کامپایلر سی شارپ برنامه نویس را در این شرایط مجبور به استفاده از عباراتی میکند که به درستی یک مقدار bool را برمی گردانند. بنابراین دستوری مانند (if(a = b باعث بروز خطا میشوند.(به جای = بایستی از == استفاده شود)

* در سی شارپ ، اشاره گرهای به حافظه بایستی فقط در داخل بلوکهای unsafe استفاده شوند و برنامه در این حالت برای اجرا نیاز به اجازه از کاربر دارد.بیشتر دسترسی شی از طریق شی امن است که یا همیشه در حال اشاره به شی صحیح موجود است یا یک مقدار Null دارد. اشاره گری به شی به درد نخور یا بلاک حافظه رندم غیر ممکن است.اشاره گر نا امن میتواند به نمونهای از value-type ، آرایه، رشته یا بلاکی که حافظه به آن داده شدهاست اشاره نماید.کدی که به عنوان نا امن علامت نخورده باشد، هنوز میتواند اشاره گرها را از سیستم بازیابی یا در آن ذخیره کند ولی نمیتواند مرجع جدیدی به آنها اختصاص دهد.

* حافظه ساماندهی شده نمیتواند صریحا آزاد شود، ولی به طور خودکار به عنوان به درد نخور تلقی میشود.انتخاب آدرسهای به درد نخور حافظه نفوذ ناپذیر است. هم چنین #C با استفاده از عبارات، پشتیبانی مستقیمی از پایان اجباری میکند(پشتیبانی از اصطلاح Resource Acquisition Is Initialization).

* وراثت چندگانه از کلاسها در این زبان پشتیبانی نمیشود.البته یک کلاس امکان ارث بری از تعداد نامحدود واسطها را دارد.پشتیبانی نکردن از وراثت چندگانه به دلیل اهداف معماری این زبان در CLI و برای جلوگیری از پیچیدگی است.

* سی شارپ بسیار typesafe تر از C++ است. تنها تبدیلات ضمنی مثل تبدیل نوع داده کوچکتر به بزرگتر یا تبدیل نوع مشتق شده به نوع پایه به طور پیش فرض و بدون خطا صورت میپذیرد.هیچ تبدیل ضمنی ای میانBooleanها و Integerها وجود ندارد و هر تبدیل user-defined بایستی به صراحت با یکی از کلمات explicit یا implicit نشانه گذاری شود. تبدیل b به a در حالتی که a یک Integer و b یک double باشد در زبان C++ مجاز است اما در سی شارپ به یک خطای زمان کامپایل منجر میشود(بایستی به صورت explicit تعریف شود)

* اعضای Enumeration در داخل محدوده شخصی خود قرار دارند.

* #C قابلیت syntactic sugar را برای توابع متداول، اکسسورها و ماجولهای کسول شده در یک کلاس به صورت ویژگیها قرار دادهاست.

اکسسورها که خاصیت نیز گفته میشوند در زبان سی شارپ قادر به کنترل دسترسی اعضا و معتبرسازی دادهها هستند.

* تمام انواع بازتابی(Reflection) و بازیابی(Recovery) قابل استفاده است.

* در حال حاضر (3 جوان 2008) دارای 77 کلمه رزرو شده است.


سیستم یکپارچه شده

سی شارپ دارای یک سیستم نوع یکپارچهاست که به آن CTS میگویند.این بدان معناست که تمام انواع،شامل موارد اصلی مانند Integerها، مشتق شده از System.Object هستند.به عنوان مثال، هر نوع یک متد به نام ToString() را به ارث میبرد.بخاطر کارائی،انواع اولیه (و انواع مقداری) به طور داخلی فضایی برای آنها بر روی پشته در نظر گرفته میشود.



استانداردسازی

در آگوست سال 2000 ، شرکت مایکروسافت،و Hewlett-Packard و شرکت Intel به عنوان پشتیبان مشخصات سی شارپ را مانند CLI به سازمان استانداردسازی ECMA ارائه کردند.در دسامبر سال 2001 ، این سازمان ، ECMA-334 را با عنوان مشخصات زبان سی شارپ منتشر کرد.سی شارپ در سال 2003 به عنوان یک استاندارد ISO به ثبت رسید(ISO/IEC 23270).در سال 2002، ECMA دومین ویرایش از خصوصیات زبان سی شارپ را پذیرفت.

در ژوئن سال 2005 ، ECMA سومین ویرایش را با اضافه کردن مواردی همچون کلاسهای partial ، متدهای ناشناس ، انواع nullable و Genericها منتشر کرد. در جولای 2005، ECMA استانداردها و TRها را همراه با پردازش Fast-Track اخیر به ISO/IEC JTC پیشنهاد کرد.این روند معمولا 6 تا 9 ماه زمان میبرد. آخرین ویرایش این زبان در 19 نوامبر سال 2007 در قالب Framework3.5ارائه گردید


کارائی

برنامه های سی شارپ ، همچون تمام برنامه های نوشته شده در .NET و سایر محیط های ماشینی مجازی مانند جاوا ، نیازمند منابع سیستم و حافظه بیشتری نسبت به برنامههای نوشته شده با سایر زبانها مانند سی پلاس پلاس است و هم چنین سرعت کمتری نیز دارد. هر چند تعریف زبان #C و CLI تحت استانداردهای ISO و ECMA استاندارد شدهاند،CLI تنها قسمتی از Base Class Library (BCL) ماکروسافت میباشد که شامل کلاسهای غیر استاندارد استفاده شده در برنامههای #C نیز میشود.از این گذشته، بعضی از قسمتهای BCL تحت حق امتیاز ماکروسافت هستند که ممکن است پیاده سازی کامل framework را مختل کند، زیرا تنها بخشهای استاندارد دارای حق محافظت RAND در برابر مدعیان را دارند.


پیاده سازی ها

متداول ترین کامپایلر #C ، Microsoft Visual C# میباشد.

کامپایلرهای C# :

* پروژه Microsoft Rotor (در حال حاضر به عنوان Shared Source Common Language Infrastructure شناخته میشود) (ثبت شده فقط برای استفاده آموزشی و تحقیقی) یک پیاده سازی منبع اشتراکی از CLR Runtime را فراهم میآورد و یک کامپایلر سی شارپ، و یک زیرمجموعه از کتابخانه]] CLI Framework مورد نیاز.

* پروژه Mono یک اوپن سورس از کامپایلر سی شارپ است،یک پیاده سازی اوپن سورس کامل از CLI شامل کتابخانههای Framework مورد نیاز که در ECMA ظاهر شده اند، و یک پیاده سازی کامل نزدیک به بقیه کتابخانه های اختصاصی کلاس .NET مایکروسافت.

* پروژه DotGNU نیز یک اوپن سورس از کامپایلر سی شارپ است، که پیاده سازی آن بسیار نزدیک به Common Language Infrastructure می باشد و کتابخانه های framework مورد نیاز موجود در ECMA و زیر مجموعه ای از کلاس های کتابخانه ای شخصی ماکروسافت در دات نت و دات نت 2 را در بر دارد. کاملاً شبیه به پروژه Mono .


نام زبان

اسم سی شارپ از علامت موسیقی شارپ گرفته شده است که در موسیقی بیان گر این است که متن نوشته شده باید نیم قدم از خط بالاتر باشد. مطابق با ECMA-334،بخش 6، مخفف ها و اختصارها ، نام زبان به صورت «#C» نوشته می شود(«کلمه لاتین C (U+0043) به همراه علامت عددی #(U+0023)») که به صورت «سی شارپ» تلفظ می شود.علامت «#» نباید با علامت شارپ در موسیقی(♯ , U+266F) که در یک صفحه کلید استاندارد وجود ندارد اشتباه گرفته شود. پسوند شارپ، توسط بسیاری دیگر از زبان های دات نت مانند #J،#Aو #F نیز به کار رفته است.پیاده سازی اولیه از زبان ایفل تحت دات نت نیز #Eiffel نام داشت که الان زبان ایفل را به طور کامل پشتیبانی می*کند.هم چنین این پسوند بعضی وقت ها در کتابخانه ها نیز به کار می رود، مانند #Gtkو #Cocoa و #Qt .

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

تشکرات از این پست
دسترسی سریع به انجمن ها