Assalomu alekum do'stlar bugun sizlarga C# dasturlash tilida safe va unsafe codelarning farqini tushintirishga harakat qilaman.
Safe codga tarif:
.Net dasturlarini ishga tushiradigan virtual mashina bor uning nomi CLR => Common Language Runtime deyiladi. Mana shu mashina orqali compile qilinadigan va execute qilinadigan jamiyki codelarni safe code deyiladi.
Safe code ning bazi sifatlarini ko'rib chiqamiz.
- Safe code CLR tomonidan qo'yilgan cheklovlarga va
- Xotirani boshqarishdagi qoidalrga
- tiplarning xafsizligi qoidalariga
- exceptionlarni handl qilish qoidalariga
- xafsizlik qoidalariga
amal qilishga majbur.
- Safe code .Net tomonidan qo'llab quvvatlanadigan barcha web dasturlar, mobil dasturlar, serverlarda ishga tusha oladi.
- Safe codelarni debug qilish va maintain qilish juda oson bo'ladi.
- Safe code shuningdek xatolardan qochishda ham qulay ular:
- xotira isrofi
- overflow
- nul pointer
larda uchraydigan xatoliklar.
- Safe code muqobil va dasturchilar tomonidan tavsiya etiladigan code yozish usulidir.
Unsafe code ga tarif:
Unsafe code bu CLR tomonian boshqarib bo'lmaydigan lekin dasturchilar tomonidan boshqarsa bo'ladigan code hisoblanadi.
Unsafe code ning bazi sifatlarini ko'rib chiqamiz.
- Unsafe code pointer dan foydalanib xotira bilan to'g'tidan to'g'ri ishlash imkoniyatini beradi. Shu o'rinda pointer =>
- o'zgaruvchining address ini saqlaydigan o'zgaruvchidir.
- Unsafe code ham xotira bloklarini ajrata oladi va pointerga kerak bo'ladigan native funksiyalrni chaqirib ishlata oladi.
- Unsafe code bazi holatlarda safe code ga nisbatan tez va samarali bo'la oladi, jumladan low-level ma'lumotlar structurasida.
- Shuni ham unitmaslik kerakki unsafe code bazi risklarga olib kelishi mumkin.
- xafsizlik
- muqobillik
- xotira buzilishi
- crushlar
- ma'lumotlar fosh bo'lishi
- Unsafe code faqatgina ishonchli environment larda ishga tushirilishi kerak.
- Unsafe code C# da unsafe modifier bilan yozilishi kerak.
- Unsafe code ehtiyotkorlik bilan va juda zarur bo'lgan holdagina ishlatilishi kerak.
Top comments (0)