قد يأتي أحد مبرمجي C# العنصريين تجاه ابناء عمومته (مبرمجي VB)، وعندما طلب منه كتابة مكتبة فئات DLL Class Library قام بعمل هذه الحركة (النص كم): C#: namespace ClassLibrary1 { public class CSharpClass { public String method() { return "From method()"; } public String METHOD() { return "From METHOD()"; } } } ما قام به هذا المبرمج العنصري الاستفادة من الميزة (الغير مفيدة) وهي حساسية حالة الاحرف Case Sensitivity، والتي تمثل أحد ابرز الاختلافات العقائدية بين مذهب الـ C# والـ Basic، فلو حاول شخص مسالم وعلى نياته من مبرمجي VB استخدام الفئة السابقة، فلن يستطيع استدعاء الطريقتين method() و METHOD(): Basic: Dim obj As New ClassLibrary1.CSharpClass ' لن يتم ترجمة السطرين التاليين Console.WriteLine(obj.method()) Console.WriteLine(obj.METHOD()) ففي عقيدة الـ VB، المعرفان method و METHOD اسم واحد ولا فرق بينهما، وسيظهر خطأ نحوي Syntax Error وقت التصميم Design time ولن يتم ترجمة البرنامج. ما قام به المبرمج العنصري ليس عنادا تجاه مبرمجي VB وحسب بل خرقا لمعايير لغة التنفيذ المشتركة Common Language Specification (CLS) (والخاصة بلغة IL)، فهذه المعايير هدفها تحقيق التوافقية مع جميع لغات .NET الاخرى، وحتى ان لم تكن مبرمج C# عنصري فقد تخرق أحد قواعدها بالخطأ، لذلك ينصح (لمطوري مكتبات DLL بالذات) باستخدام المواصفة Attribute التالية ووضعها في الملف AssemblyInfo.xx: Basic: ' assemblyInfo.vb في الملف <Assembly: System.CLSCompliant(True)> C#: // assemblyInfo.cs في الملف [assembly: System.CLSCompliant(true)] بمجرد اضافتك لهذه المواصفة، فستظهر رسالة انذار Warning عند كل سطر يتوقع انه خرق احد معايير CLS. ملاحظة: تقول مراجع MSDN ان الاصدار الحالي من VB لا يظهر انذارات. ويكفينا عنصرية فكلنا عيال تسعة! -- تركي