PDA

View Full Version : آموزش: درباره CLR و IL و همچنین Type Safe و MangeCode و UnMnagedCode در سی شارپ



RIG000
یک شنبه 15 مرداد 1396, 20:21 عصر
نگاه اجمالی و باز شدن دیدگاه نسبت به موارد زیر :

در مورد IL یعنی زبان میانی ! یعنی زبانی که می تونه به طور مشترک مورد استفاده قرار بگیره. وقتی شما در نظر میگیرید که با VB یا #F یا #C کد بزنید یعنی شما در نهایت اینها رو توسط IL که میشه Intermediate language به یک کد واحد تبدیلش کنید! یعنی شما وقتی integer رو در vb‌و int رو در سی شارپ کد میزنید در این ما بین در زمان compile زبانی میانی یعنی IL میاد اینها رو به int32 تبدیل میکنه . ( در مورد CTS یعنی common type system بخونید)

در موردCLR یعنی شما Common language Run time یعنی زبان run time ماست . که در نهایت میاد این اتفاقاتی که IL انجام داده رو به کد های Native و اصلی کامپیوتر تبدیل میکنه . در ClR‌ مثلا بحث manage کردن مموری در نظر گرفته شده که این کار رو Garbage Collector انجام میده. این یکی از خصوصیت های CLR‌ هست. (اما اگر dispose رو در پروژه ها دیده باشید باید بگم که نمیشه به GC که Garbage collector هست در CLR اعتماد کافی رو داشت واسه همین در بلوک کد به طور دستی این ابجکت های پا در هوا در حافظه رو نمیزارن بمونه و با این Dispose ‌از این مورد جلوگیری و پاکشون میکنن )

سی شارپ type safe ‌هست یعنی شما یعنی برای کد هاش اصول و قاعده ای دیده شده و یک نوع کد ایمن (safe)رو به وجود اورده . وقتی سی شارپ کد های قاعده مند داره پس در اصل manage code هست و تمام کد هاش مدیریت شده . اما در زبانی مثل c پلاس پلاس ما umanaged code رو روبرو هستیم. پس c ++ به نوعی میشه گفت unsafe هست .
حالا در نظر بگیرید ما میخایم مثلا با خونه حافظه stack کار کنیم و به طور مستقیم در اون تغییراتی انجا بدیم که مدیریت کد بر روی این موضوع به وسیله برنامه نویس محقق میشه که میشه گفت ما اینجا با unmanage code سرو کار داریم در سی شارپ. برای اینکه بتونیم این مورد رو هندل کنیم باید از دو کلمه کلیدی unsafe و fixed استفاده کنیم که این دو کی ورد عملا کنترل کد رو به عهده میگیرند.