فصل یکمقدمهای بر C# و .NET

<!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:35.4pt; mso-footer-margin:35.4pt; mso-paper-source:0;} div.Section1 {page:Section1;} -->

فصل یک

C# و .NET مقدمهای بر

در این فصل یاد خواهید گرفت:

معماری و ویژگیها :NET. • مروری بر چارچوب

1: مروری بر کارهای قابل انجام توسط قسمت زمان اجرای چارچوب. CLR •

فقط در لحظه بارگذاری اسمبلیها و تایید کد لازم است). ) .JIT2 NET • کامپایلر

و تعامل بین زبانی را مدیریت میکنند. CLR قوانینی که سازگاری :CTS و 4 CLS3

اسمبلیها: نگاهی کوتاه به ساختار یک اسمبلی، فلسفهی پشت آن و تفاوت مابین اسمبلیهای خصوصی و اشتراکی.

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

بر ای نما یشILdasm چندین ابزار با هدف توسع ه ی کد فراهم شده اس ت . این ابزار شام ل .NET • ابزار توسعه : بوسیلهی

برای مشاهده خصوصیات یک کلاس و ابزار دیگر پیکربندی چارچوب. WinCV ، کد

از خط فرمان و گزینههایی برای پیکربندی یک برنامه. #C کاربرد کامپایلر :#Cکامپایل کردن و اجرای برنامههای

استفادهی کار ای یک زبان ، یادگیری گرامر و و یژگیهای زبان را نیاز دارد . در حق یقت بخش اعظم منحن  ی ی ادگیری بر ای

کافی نیست. معمار نرم افزار و توسعه دهند ه ی #C تکنولوژی جد ید، به مح یط برنامه نویسی مرتبط اس ت . حرفهای شدن در

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

شامل یک محیط اجرایی پیوند خورده به یک کتابخانه کلاس پایه است، که در ای ن Platform .NET از منظر برنامهنویسی

بررسی خواهد شد. Platform .NET و طرز کار با FCL ،CLR فصل

NET. 1-1 مروری بر ساختار

بصورت یک مح یط مجتمع بر ای توسعه و اجرای برنامه های اینترنتی، برنامههای کاربرد ی و یندوز(میزکار) و حتی NET. ساختار

دستگاههای موبایل طراحی شده است. اهداف اصلی آن بصورت زیر است:

فراهمساختن یک محیط شیگرایی مابین دامنهای از کاربردها.

را کم کرده و پروسه توزیع و نصب کد را ساده می کند. DLL با فراهم ساختن این محیط، تداخل نسخههای

1 Common Language RunTime

2 Just In Time

3 Common Language Specification

4 Common Type System

5 Framework Common Library

MOHSEN_MAHYAR@YAHOO.COM

14

یک مح یط قابل حمل 1 براساس استانداردها ی تا یید شده آماده می ساز د تا بتوانند توسط هر س یستم عامل ی میزبا نی

استاندارد شدهاند. ECMA بوسیلهی 3 CLI به نام 2 NET. و یک بخش اصلی از زمان اجرای #C شوند،. در حال حاضر

فراهم ساختن یک محیط مدیریت شده، که اجرای امن را به سادگی تایید می کند.

برای رس یدن به این اهداف بزرگ ر و ی یک معمار ی به توافق ر س یدند ک ه چ ا رچوب را به دو بخش NET. طراحان چارچوب

1 آن را ارائه م یکند. - شکل 1 FCL. و CLR : تجزیه می کند

NET Framework. 1 معماری - شکل 1

توسط م ا یکروسافت) اجرای کد و همه کاره ا ی تخ ص یص یافته به آ ن همچون کامپای ل، CLI پیاده سازی استاندارد )CLR

که کد مد یریت شده م ی نامند)، ) CLR مدیریت حافظه، ام ن یت، مدیریت ریسمان و ایمنی از نوع داد ه 4، کد اجرا شده تحت نظر

را اداره می کند. API و COM همچون CLR کد مدیریت نشده توسط

قطعه اصلی دیگر می باشد. یک کتابخانه کد قابل استفاده مجدد (شامل کلاس ها، ساختارها و غیره )، که برای برنامه های FCL

این کتابخانه کلاس مشترک را استفاده می کنند. پس این مفاهیم NET. در دسترس است. همه زبان های NET. اجرا شده تحت

مشترک خواهد بود. NET. در همه زبا نهای

CLI و استانداردهای NET.-1-1 -1

می پرسد: آیا این مهارت را می تواند به #C و NET. یک توسع هدهنده قبل از صرف زمان برای یادگیری

مایکروسافت فقط مختص س یستم عامل ویندوز NET. های دیگر تبد یل کند؟ آیا محصول Platform

است؟ یا آیا آن قابل حمل اجرایی است و آن برای حمل روی سیستم عامل های دیگر نیز پیاده سازی

CLI و استانداردهای C#.NET شده است؟ برای جواب دادن به این سئوال، فهمیدن رابطهی مابین

ضروری است.

را تعریف می کند. آن هیچ سیستم عامل ی را تعیی ن نم ی کند و بر ای Platform یک مح یط اجر ایی مجاز ی مستقل از CLI

CLI است که با ید توسط کامپ ا یلرهای مط ی ع CIL لینوکس همانند و یندوز راحت اس ت . بخش استاندارد مرکزی، تعریف یک 5

1 Portable

2 Common Language Infrastructure

3 European computer Manufactures Association

4 Type Safety

5 Common Intermediate Language

NET. فصل اول- مقدمهای بر چارچوب

15

را تعر یف م  ی کند . CLI تولید شود. بخش دیگر س یستم نوع 1 است که همه انواع داده ای پشت یبان شده توسط هر زبان م ط یع

این کد میانی به زبان اصلی سیستم عامل میزبان کامپایل می شود.

در بر دارد که بوسیله مایکروسافت توسعه و ارتقاء #C استانداردهایی را برای زبان CLI

(Fortran,Pascal,Pythen,Defacto). یافته اند

است. این پ یاده سازی و یژگی های ز ی ادی CLI ارائه شده در شک ل 1 1، پ یاده سازی ما یکروسافت از استاندارده ا ی NET. چاچوب

2 مقا ی سه - شکل 1 CLI مشخص م ی شوند. برای فهم بیشتر، آن را با معما ر ی استاندارد ه ا ی CLI دارد که بو س یله معم اری

کنید.

CLI 2 معماری تعریف شده بوسیله مشخصه - شکل 1

این کتاب پ یادهسازی ما یکروسافت را تش ر یح م ی کند. فرض بر آن است که م یتوانیم از کده ا ی قبل ی نوشته شده نیز استفاده

به س یستم عامل د یگری منتقل نخواهد ش د و محیط مجاز ی گفته شده نیز شفاف NET. کنیم و کده ا ی پ یادهسازی شده توس ط

است.

CLR -2-1

تمام چرخ ه ی زندگ ی یک برنامه کاربر د ی را م د یریت م ی کند. آ ن کد را یافته و کامپایل م ی کند. کلاس ها ی تخص یص یافته CLR

را بارگذار ی م ی کند. اجرایش را م د یریت م ی کند و مدیریت اتومات یک حافظه را مطمئن م  ی سازد . آن ارتباط ب ین زبا نی را

را نشان CLR پشتیبانی م ی کند، تا تعامل ما بین کدها ی نوشته شده در زبا ن های مختلف را مجاز دار د . این بخش کارکرد داخ ل ی

می دهد. آن یک بحث عمقی نیست و فقط می خواهد شما را با اصطلاح آن آشنا سازد.

NET. -1-2 کامپایل کردن کد -1

خاص پ یشنهاد شده اس ت . این کد به CPU کد ی تو لید م ی کنند که کد هدف زمان اجرا بوده و برای یک CLR کامپایلرهای مطیع

بسته بندی م  ی شود . توجه ک ن ی د که EXE یا DLL یک زبان از نوع اسمب ل ی است که در یک فا یل MSIL یا IL . است CIL نام

را به ی ک کد ماش ین IL ,JIT اسمبلی ها فایل هایی با استاندارد اجرایی نیستند. لازم است یک کامپایلر زمان اجرا به نام

اس  ت، ای ن کد م ی انی یک ی از IL مسئول م د یریت ای ن CLR خاص تبد یل کند . (زمانی که برنامه واقعا اجرا م ی شود). چون

CLR ، 3 نشان م  ی دهد - از نظر سازگاری زبان اس ت . همانطور که شک ل 1 NET. کلیدهای رویارویی با اهداف اسم ی چا رچوب

1 Type System

MOHSEN_MAHYAR@YAHOO.COM

- C# برنامه نویسی

16

با هم IL مستقل از زبان می باشد. چون برنامه ها از ط ر ی ق IL نمی داند چه ز بانی این برنامه را ایجاد کرده اس ت . تعامل آن ب ا

ارتباط برقرار می کنند، پس خروجی یک کامپایلر می تواند با خروجی کامپایلر متفاوت دیگر مجتمع شود.

CLR 1 عملکرد - شکل 3

فراهم م  ی شود . بد ین JIT است ، که با مح ل ی کردن 1 ایجاد کد ما ش ین در کامپ ا یلر Platform قابل یت حمل ،NET. هدف د یگر

با JIT د یگری که چارچوب خاص خودش و یک کامپا یلر Platform م ی تواند رو ی Platform تولید شده رو ی یک IL معنی که

کد ماشین خاص خودش را دارد، اجرا شود.

با ید فراداده 2ای را نیز صادر کنند . در فر اداده ها ،IL است ، برای هر ماژول علاوه بر تولید CLR کامپایلرهایی که کد هدف آنها

مجموعه ای از جداول قرار می گیرند تا هر ماژو ل ، کد خود - توص یف 3 داشته باشد. در جداول علاوه ب ر توص یف کامل کد،

اطلاعاتی درباره اسمب ل ی ها نیز وجود دار د . این اطلاعات شامل موارد د یگر نیز هستند: چه نوع داد ه هایی در دسترس هستن د ؟

نام هر نوع داده، اعض ا ی نوع د اده، دامنه یا م یدان د ید نوع داد ه و ویژگی های هر نوع داده د یگر . ف راداده های د یگر ی ک ه

کاربردهای زیادی دارند:

است، که اطلاعات همه ی نوع داد ه های مورد نیاز بر ای کامپا ی ل کردن را JIT • مهمترین کار برد آن بو س یله کامپا یلر

مستقیماً از فراک د 4 جمع آوری م ی کند. این اطلاع ات را بر ای بررس ی کد بکار م ی برد تا مطمئن شود برنامه عم ل ی ات را

از طریق مقایسه ی پارامترهای متد، فراخوانی صحیح را مطمئن می سازد. JIT ، به درستی انجام می دهد. برای مثال

فراداده ها در پروسه جم ع آوری زباله 5 استفاده م ی شوند. جمع کننده زباله، برای شناسا یی ف یلد ها و ارجاعات آنها ا ز

فراداده استفاده می کند و می تواند تعیین کند حافظه ی چه اشیایی می توانند آزاد شوند یا نه؟

یک مجموعه از کلا س ها بر ای خواندن فرادا د ه های یک برنامه فراهم م ی کند. این توانایی به ن ا م انعکاس 6 شناخته NET. •

می شود، که یک و یژگی قدرتمند است و اجازه می دهد یک برنامه در زمان اجرا، کد را مورد جستجو قرار دهد و

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

1 Localizing

2 Metadata

3 Self descriptive

4 Meta code

5 Garbage Collection

6 Reflection

NET. فصل اول- مقدمهای بر چارچوب

17

که ی ک NET. و فراداده بر ای فراهم ساختن ارتباط بین زبا نی بس یار مهم هستن د . اما د نیای واقع ی به همه کامپ ا یلرها ی IL

سازگار IL مجموعه ی مشترک از انواع داد ه ای و توصیف زبان را پش ت یبانی م ی کنند، منوط اس ت . بر ای مثا ل ، دو زبان د ر

نیستند، اگر یکی عدد صحیح ع لامت دار 32 بیتی را پش ت یبانی کند و دیگری آن را پشت یبانی نکند . آنها ممکن است گرامر

متفاوتی داشته باشند، اما باید روی انواع داده ای پایه که پشتیبانی می کنند، توافق داشته باشند.

است . آن شرح م ی دهد CLR تعریف م ی کند که بخش مکم ل CTS یک توص یف رسمی به نا م CLI ، همانطور که قبلاً بحث شد ه

پشتیبانی شوند. CLR که چگونه انواع داده ای تعریف می شوند و چگونه باید رفتار کنند تا بوسیله

CTS-2-2 -1

فراهم م ی کند. علاوه بر این نحوه اعلان و ایجاد انواع داد ه ای NET. یک مجموعه ی پا یه از انواع داد ه ای بر ای زبان های تحت CTS

،NET. 4 نشان م ی دهد چگون ه - سفارشی و نحوه مد یریت مدت زمان عمر نمون ه های این نوع داد ه ها را ت ع یین م ی کند. شکل 1

را سازما ندهی می کند. CTS

CTS 4- انواع داده ای پایه تعریف شده در - شکل 1

از این شکل دو چ یز به دست م ی آید. واضح ترین مورد اینکه، انواع مقدا ر ی 1 یا ارجاع ی 2 گ روه بندی م ی شوند. این طبقه بندی بر

از طریق اشاره گرها ،Heap اساس نحوه ی ذخ یره و دسترسی در حافظه اس ت . انواع ارجاع ی در یک ناح یه ی خاص حافظه به نام

برنامه قرار م ی گیرند. مورد د یگر اینکه، همه انواع داد ه ای اعم Stack دستیابی م ی شوند، در حا لیکه انواع مقدا ر ی مستق یماً در

ارث بری م ی کنند. پس مطمئناً System.Object از یک نوع داد ه ی پ یش تعر یف شده بنام NET. از سفارش ی و انواع داده ای

همه انواع داده ای، یک مجموعهی پایه از متدها و خصوصیات را ارث بری می کنند.

نوع داده" 3 "،NET. در

یک عبارت کلی است که به یک کلاس، ساختار، نوع شمارشی یا واسط یا نماینده اشاره می کند.

میزبانی شوند. این به CLR است، تضمین می کند که انواع داد های آن می توانند بوسیله ی CTS کامپایلری که مطیع مشخصه

وجود دارد که CLS تنهایی ضامن ارتباط یک زبان با زبان دیگر نیست. یک مجموعهی محدود کننده از مشخصات به نام

قوانینی را برای ارتباط بین زبانی تعریف می کنند. این مشخصات، ویژگی های حداقلی تعریف می کنند که یک کامپایلر با هدف

را نشان می دهد: CLS 1 بعضی از قوانین - باید شامل باشد. جدول 1 CLR

CLS 1 قوانین و ویژگیهای - جدول 1

1 ValueType

2 Refrence Type

3 Type

MOHSEN_MAHYAR@YAHOO.COM

- C# برنامه نویسی

18

ویژگی قانون

میدان دید 1 این قوانین فقط به آن اعضایی از یک نوع داده اعمال می شوند که از بیرون اسمبلی تعریف کننده

در دسترس است.

کاراکترها و حالت

آنها

در دو متغیر متمایز، باید اختلاف آنها بیشتر از حالت کاراکترها در آنها باشد.

هستند. CLS انواع اصلی انواع داده ای اصلی مطیع

Byte,Int16,Int32,Int64,Single,Double,Booleam,char,Decimal,Intptr,String

سازنده یک سازنده قبل از دسترسی به هر داده از کتابخانه، باید سازنده کلاس پایه را فراخوانی کند.

محدوده های آرایه همه ابعاد آرایه ها باید از اندیس صفر شروع شوند.

64 باشد. ,Int32Int 16Int, وByte نوع شمارشی نوع داده اصلی یک نوع شمارشی باید از نوع

باشند. CLS متد انواع دادهی پارامترها و مقدار بازگشتی استفاده شده در متد باید مطیع

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

public Class Conversion

}

public double Metric (double inches)

{

return (2,54 * inches) ;

}

public double metric (double miles)

{

return (miles/0,62);

}

{

metric و Metric مغا یرت دارد . چون دو مت د CLS آشنا نیستید، ولی م ی توانید به راح ت ی بب ینید که با قوا نین #C اگرچه با ک د

با شکست مواجه می شود. VB.NET جواب می دهد، ولی درصورت تعامل با کدنویسی #C قانون را نقض کرده اند. اگرچه در

-3-2 اسمبلیها -1

EXE اجرا م ی شوند، باید در یک اسمبلی قرار گیرند. بطور منطقی اسمبلی یک فای ل NET. همه کدها ی مد یریت شده که تح ت

است . از نظر ف یزیکی ممکن است شام ل کلکس یونی از یک یا چند ف ا یل باشد ، که هر ف ا یل م ی تواند شامل کد یا منابع ی DLL یا

باشند. XML همچون تصاویر یا

تبد یل م ی کند، ی ک اسمب ل ی ایجاد م  ی شود . EXE یا DLL یک فا یل کد منبع را به یک NET. زمانی که یک کامپا یلر سازگار

است . ای ن موارد را بی شتر IL 5 مشاهده م ی کنید، یک اسمبل ی شامل یک اظهارنامه 2، فرا داده و - همانطور که در شک ل 1

بررسی می کنیم.

اظهار نامه

1 Visiblity(Scope)

2 manifest

NET. فصل اول- مقدمهای بر چارچوب

19

هر اسمبل ی با ید یک فا یل برای د ر برداشتن اظهارنامه داشته با شد. اظهارنامه شامل جداو لی است که در این جداو ل ، اس  امی

همه فا یل های موجود در اسمب ل ی، ارج اعات به اسمب ل ی های بیرونی و اطلاعاتی همچون نام و نسخه اسمبلی لیست م ی شو ند.

اسمبلیهای نامگ ذاری شده ، یک امضاء د یجیتالی 1 منحصر به فرد دارن د . زمانی که یک اسمبل ی بارگذار ی م ی شود، ابتد ا فایل

بارگذاری می شود تا بتواند اعضای اسمبلی را تشخیص دهد. CLR توسط manifest

/ 1 نظر / 135 بازدید
ALI

SALAM VA KHASTE NABASHI