If you do not find what you're looking for, you can use more accurate words.
تتفرد لغة سي# عن غيرها من لغات برمجة إطار عمل دوت نت في كونها مرتبطة بشكل وثيق بمزايا البنية التحتية المشتركة للغات البرمجة (CLI)، فعلى سبيل المثال تنسب معظم الأنماط الحقيقية إلى قرائنها من أنماط القيمة (بالإنجليزية: value-types) الموجودة في CLI. على الرغم من ذلك فإن توصيف اللغة لا يتطرق إلى متطلبات توليد الكود الخاصة بالمصرّف، بمعنى أن التوصيف لا يرغم مصرف سي# على توليد كود متوافق مع وقت التنفيذ المشترك للغات (CLR) أو توليد تعليمات متوافقة مع اللغة المشتركة الوسيطة (بالإنجليزية: Common Intermediate Language) أو أي تنسيق آخر. وهكذا يمكّن (نظرياً على الأقل) مصرّف سي# من توليد كود لغة الآلة مباشرة على غرار باقي المصرفات كمصرّف سي++ ومصرّف فورتران. فيما يلي بعض من المزايا الجديرة بالاهتمام كونها تميز لغة سي# عن لغتي سي وسي++ (بالإضافة إلى جافا لدى ذكر ذلك صراحة):
var بالإضافة إلى التصريح الضمني عن المصفوفات المنمطة عن طريق الكلمة المفتاحية متبوعة بمهيئ المجموعة.virtual من أجل إتاحة تجاوز الطرق في الصفوف المشتقة على غرار لغة سي++ (وخلافاً للغة جافا).dynamic إمكانية الربط مع الطرق أثناء التنفيذ بما يمكن من استدعاء الطرق وتركيب الكائنات وقت التنفيذ مثلما تفعل لغة جافا سكربت.delegate التي تتيح تعريف مؤشرات قوية التنميط إلى توابع.delegate وغيرها بشكل يشابه وظيفية الإشارات والمقابس (بالإنجليزية: signals and slots) التي تضيفها بيئة تطوير كيوت إلى لغة سي++.[(MethodImpl(MethodImplOptions.Synchronized]، كما أنها تدعم أقفال استبعاد التشارك عبر الكلمة المفتاحية lock.namespace في لغة سي# نفس المستوى من العزل الذي توفره رزمة package جافا وفضاء التسمية namespace سي++، كما أنه يتمتع بالعديد من القواعد والميزات الشبيهة برزمة جافا.bool بشكل صارم. إذ تتطلب كافة العبارات البرمجية التي تتضمن شروطاً (مثل عبارة while وعبارة if) تعابيراً من نمط يحقق المعامل true كالنمط البولياني مثلاً. بالمقارنة مع لغة سي++ التي تحوي أيضاً النمط البولياني نجد أن سي++ تتيح تحويل هذا النمط من وإلى أرقام صحيحة، نتيجةً لذلك يمكن تتطلب بعض التعابير مثل (if(a فقط أن يكون a قابل للتحويل إلى bool مفسحة المجال بذلك لأن يكون a من النمط int أو حتى أو يكون مؤشراً. لا تتيح سي# مقاربة "الأعداد الصحيحة تعني صحيح أو خطأ" على اعتبار أن إجبار المبرمج على استخدام تعابير تعيد النمط bool تماماً قد يمنع حدوث عددٍ من الأخطاء البرمجية الشائعة في لغتي سي وسي++ (مثل العبارة (if(a = b حيث استًبدل معامل المقارنة == بمعامل الإسناد =).unsafe (غير آمن)، وتتطلب البرامج التي تحتوي كوداً غير آمنٍ سماحيات ملائمة كي تعمل. غالباً ما تستخدم الدلائل (بالإنجليزية: References) الآمنة من أجل الولوج إلى الكائنات، حيث تشير هذه الدلائل دائماً لى كائنات فعالة في الذاكرة كما أن لديها قيمة فارغة null معرفة بشكل ملائم؛ من المستحيل الحصول على دليل إن كائن تم تدميره (من خلال جامع القمامة) أو الولوج إلى كتلة عشوائية في الذاكرة. يمكن للمؤشر غير الآمن الإشارة إلى متحول من نمط-قيمة أو مصفوفة أو سلسلة محرفية أو كتلة من الذاكرة محجوزة على المكدس. يمكن للكود غير الآمن أن يخزن ويتلاعب بالمؤشرات من خلال النمط System.IntPtr ولكن لا يمكنه الاطلاع على محتوياتها.try...catch الخاصة بمعالجة الاستثناءات البنية try...finally التي تضمن تنفيذ الكود الموجود في كتلة finally سواءً حصل استثناء أم لم يحصل.Int16 إلى Int32 مثلاً). يتم تطبيق هذه السياسة أثناء التصريف وخلال الترجمة في الوقت المناسب (JIT) وفي بعض الأحيان أثناء التنفيذ. لا يوجد تحويل ضمني بين النمط البولياني والنمط الصحيح ولا بين أعضاء الأنماط التعدادية والنمط الصحيح (باستثناء المحرف 0 والذي يمكن تحويله ضمنياً إلى أي نمط تعدادي). يجب الإشارة إلى أي تحويل معرف من قبل المستخدم بشكل صريح أو ضمني بشكل يخالف البواني الناسخة ومعاملات التحويل في لغة سي++ التي تعمل بشكل ضمني افتراضياً.