C# একটি অবজেক্ট-ওরিয়েন্টেড, টাইপ-সেফ এবং জেনারেল-পারপাস প্রোগ্রামিং ল্যাঙ্গুয়েজ, যা প্রোগ্রামারদের প্রোডাক্টিভিটি বর্ধনে ফোকাস করে। এটি এক্সপ্রেসিভনেস, সিমপ্লিসিটি এবং পারফরম্যান্স ফোকাসের মাধ্যমে এই প্রোডাক্টিভিটি অর্জন করার চেষ্টা করে। এটি উইন্ডোজ, ম্যাক, এবং লিনাক্স সহ বিভিন্ন প্ল্যাটফর্মে কাজ করে।
টাইপ-সেফটি
C# একটি স্ট্যাটিক্যালি টাইপড ল্যাঙ্গুয়েজ। অর্থাৎ আপনি একটি প্রোগ্রাম কম্পাইল করলে টাইপগুলো ভেরিফাই হয়। এটি প্রোগ্রাম চলার আগেই একটি বড় সেট এরর إلিমিনেট করে দেয়।
গার্বেজ কালেকশন
অটোমেটিক মেমরি ম্যানেজমেন্ট C#-র একটি অপরিহার্য ফিচার। এর একটি গার্বেজ কলেক্টর থাকে যা প্রোগ্রামের সাথে সাথে চলে এবং অনюзаেজড মেমরি রিক্লেইম করে। এটি প্রোগ্রামারদের মেমরি এক্সপ্লিসিটলি ডি-অ্যালোকেট করার বোঝ থেকে মুক্ত করে।
.NET ইকোসিস্টেম কমন ল্যাঙ্গুয়েজ রানটাইম এবং বেস ক্লাস লাইব্রেরি দিয়ে C# প্রোগ্রামকে সাপোর্ট করে। এছাড়া এতে একটি অ্যাপ্লিকেশন লেয়ার রয়েছে যা ডেস্কটপ, মোবাইল, বা ওয়েব অ্যাপ্লিকেশন বিল্ড করার লাইব্রেরি প্রদান করে।

কমন ল্যাঙ্গুয়েজ রানটাইম (CLR)
Common নির্দেশ করে যে রানটাইমটি .NET ইকোসিস্টেমের অন্যান্য ভাষাগুলো (C#, Visual Basic, F#, ম্যানেজড C++) দ্বারা শেয়ার্ড। CLR গার্বেজ কালেকশন এবং এক্সেপশন হ্যান্ডলিং প্রদান করে।
C# কম্পাইলার কোডকে একটি ইন্টারমিডিয়েট ল্যাঙ্গুয়েজ (IL)-এ কনভার্ট করে, জাভার বাইটকোডের মতো। CLR তারপর এই IL-কে মেশিনের নেটিভ কোডে (যেমন X-64 বা X-86) এক্সিকিউশনের ঠিক আগে কনভার্ট করে। এটিকে জাস্ট-ইন-টাইম (JIT) কম্পাইলেশন বলা হয়।
এই ইন্টারমিডিয়েট ল্যাঙ্গুয়েজের কন্টেইনারকে অ্যাসেম্বলি বলা হয়। এতে টাইপগুলোর তথ্য সহ IL কোড থাকে। এটি এক অ্যাসেম্বলিকে অন্য অ্যাসেম্বলি রেফারেন্স করার অনুমতি দেয়। C# রিফ্লেকশন ব্যবহার করে মেটাডেটা কোয়েরি করতে পারে।
বেস ক্লাস লাইব্রেরি (BCL)
CLR-এ অন্তর্ভুক্ত একটি অ্যাসেম্বলি সেটকে বেস ক্লাস লাইব্রেরি বলা হয়। এটি অধিকাংশ প্রোগ্রামের জন্য অপরিহার্য ফাংশনালিটি প্রদান করে, যেমন I/O, ফাইল/টেক্সট প্রসেসিং, নেটওয়ার্কিং, ইত্যাদি।
এতে সেই টাইপগুলোও রয়েছে যা ল্যাঙ্গুয়েজ নিজে প্রয়োজন, যেমন কলেকশন, LINQ, এবং অ্যাসিনক্রোনাস প্রোগ্রামিং, এবং CLR-এর ফিচার যেমন গার্বেজ কালেকশন এবং রিফ্লেকশন এক্সেস করতে দেয়।