কম্পিউটার টিউটোরিয়াল

C#-এ ম্যানেজড কোড (Managed Code) কী এবং কীভাবে কাজ করে

ম্যানেজড কোড হল এমন কোড যার এক্সিকিউশন Common Language Runtime (CLR) দ্বারা পরিচালিত হয়। C#, F#, VB.NET ইত্যাদি .NET ল্যাঙ্গুয়েজে লিখা কোড ম্যানেজড কোড।

ম্যানেজড কোডের জীবনচক্র

  1. সোর্স কোড (C#) → Compiler (csc/roslyn) → IL (Intermediate Language)
  2. IL + Metadata → Assembly (.dll/.exe)
  3. Runtime: CLR লোড করে → JIT Compiler → Native Machine Code → এক্সিকিউশন

CLR-র سার্ভিসগুলো (Managed Code-কে যা মিলে)

সার্ভিসবিবরণ
Memory Managementগারবেজ কালেকশন (GC), অটোমেটিক মেমরি রিক্লেম
Type Safetyটাইপ চেকিং, বাউন্ড চেকিং, ইনভেলিড কাস্ট প্রতিরোধ
Exception Handlingস্ট্রাকচার্ড এক্সেপশন হ্যান্ডলিং (try/catch/finally)
SecurityCode Access Security (CAS), স্যান্ডবক্সিং
Thread Managementথ্রেড পুল, সিঙ্ক্রোনাইজেশন, async/await
InteropP/Invoke, COM Interop, unmanaged কোড কল

Managed vs Unmanaged Code

দিকManaged (C#)Unmanaged (C/C++)
কম্পাইলেশনIL (Intermediate Language)নেটিভ মেশিন কোড
মেমরিGC-ম্যানেজডম্যানুয়াল (malloc/free)
টাইপ সেফটিএনফোর্সডপ্রোগ্রামারের দায়িত্ব
পয়েন্টারপ্রতিবন্ধিত (unsafe ছাড়া)পূর্ণ অ্যাক্সেস
প্ল্যাটফর্মক্রস-প্ল্যাটফর্ম (IL)প্ল্যাটফর্ম-স্পেসিফিক

C#-এ Unsafe Context (Unmanaged কোড)


unsafe
{
    int value = 100;
    int* ptr = &value; // পয়েন্টার ব্যবহার
    Console.WriteLine(*ptr); // 100
}

unsafe ব্লকে পয়েন্টার, স্ট্যাকঅ্যালোক (stackalloc), এবং আনম্যানেজড মেমরি অ্যাক্সেস সম্ভব। কম্পাইল করতে /unsafe ফ্ল্যাগ দরকার।

সারসংক্ষেপ

  • ম্যানেজড কোড = CLR-র অধীন এক্সিকিউশন = সেফটি + প্রোডাক্টিভিটি
  • অনম্যানেজড কোড = ডায়রেক্ট হার্ডওয়ার/ওএস অ্যাক্সেস = কন্ট্রোল + রিস্ক
  • C# উভয় সাপোর্ট করে (unsafe দিয়ে)।
  1. C#-এ অ্যারে (Array) কী?

  2. এরর কোড 0x803FA067 বোঝা: কারণ, সমাধান এবং ট্রাবলশুটিং ধাপ

  3. উইন্ডোজে USB এরর কোড ৪৩: কারণ, লক্ষণ এবং কীভাবে ফিক্স করবেন

  4. ম্যাক এরর কোড ৩৬: ফাইল অপারেশনের সময় সমস্যা ও সমাধান