تحديدات اللغة العامة

لتتفاعل بشكل كامل مع الكائنات الأخرى بغض النظر عن اللغة التي تم تنفيذها بها ، الكائنات يجب أن تعرض للمستدعين فقط تلك الميزات المشتركة في كافة اللغات التي يجب أن تتفاعل معها. لهذا السبب، تم تعريف مواصفات اللغة العامة (CLS), التي هي مجموعة من ميزات اللغة الأساسية المطلوبة من قبل العديد من التطبيقات. قواعد CLS تُعَرِف مجموعة فرعية من نظام نوع شائع; أي : كل القواعد المطبقة على نظام نوع شائع تطبق على CLS ، فيما عدا حيث يتم تعريف قواعد أكثر حزماً في CLS. الـ CLS تساعد على تحسين والتأكد من إمكانية التشغيل المتداخل بين اللغات بواسطة تعريف مجموعة من الميزات التي يمكن للمطورين الإعتماد عليها لتكون متوفرة في مجموعة متنوعة من اللغات. الـ CLS تُنشِئ أيضاً متطلبات للتوافق مع CLS ; هذه تساعدك لتحديد ما إذا كانت التعليمات البرمجية المدارة الخاصة بك تتوافق مع CLS و إلى أي مدى تدعم أداة ما تطوير التعليمات البرمجية المدارة التي تستخدم ميزات CLS.

إذا كان المكون الخاص بك يستخدم فقط ميزات CLS في API التي يعرضها للتعليمات البرمجية الأخرى (بما في ذلك الفئات المشتقة) , المكون مضمون الوصول إليه من أية لغة برمجة تدعم CLS. المكونات التي تلتزم بقواعد CLS و تستخدم فقط الميزات المضمنة في CLS يقال أنها مكونات متوافقة مع CLS.

معظم الأعضاء المُعَرّفة من قِبل أنواع في الـ مكتبة فئة NET Framework. متوافقة مع CLS. ومع ذلك، بعض الأنواع في مكتبة الفئة لديها عضو واحد أو أكثر غير متوافق مع CLS. هذه الأعضاء تُمَكِن الدعم لميزات اللغة الغير موجودة في CLS. الأنواع و الأعضاء الغير متوافقة مع CLS يتم التَعرُف عليها كما في الوثائق المرجعية , و في كل الحالات يتوفر بديل متوافق مع CLS. لمزيد من المعلومات حول الأنواع في مكتبة فئات .NET Framework , راجع مكتبة فئة NET Framework..

الـ CLS تم تصميمه ليكون كبيراً بما يكفي لتضمين ثوابت اللغة المطلوبة عادة من قبل المطورين , و لا تزال بعد صغيرة بما يكفي لتكون معظم اللغات قادرة على دعمها. بالإضافة إلى ذلك ، تم استبعاد أي بناء لغة يجعل من المستحيل التحقق من أمان نوع التعليمات البرمجية بسرعة من CLS بحيث تكون كل اللغات المتوافقة مع CLS قادرة على إنتاج تعليمات برمجية يمكن التحقق منها إذا إختارت أن تقوم بذلك. لمزيد من المعلومات حول التحقق من أمان النوع , راجع عملية تنفيذ مُدارة.

الجدول التالي يلخص الميزات الموجودة في CLS و يشير إلى ما إذا كانت الميزة تنطبق على كل من المطورين و المحولات البرمجية (الكل) أو المحولات البرمجية فقط. الغرض منه هو أن يكون إعلامي , لكن ليس شاملاً. للتفاصيل ، راجع مواصفات البنية الأساسية للغة العامة ، القسم I , و الذي يتوفر في موقع ويب شبكة مطوري Microsoft (MSDN).

الميزة

ينطبق على

الوصف

عام

   

   

Visibility

الكل

قواعد CLS تنطبق فقط على تلك الأجزاء من النوع التي تُعَرَض خارج التجميع المُعَرِف.

الأعضاء العمومية

الكل

الحقول و الأساليب الثابتة العمومية ليست متوافقة مع CLS.

التسمية

   

   

الأحرف و حالة الأحرف

الكل

المحولات البرمجية للغات المتوافقة مع CLS يجب أن تتبع قواعد Annex 7 من التقرير التقني 15 من الموصفات القياسية Unicode 3.0 ، و التي تتحكم في مجموعة الأحرف التي يمكنها البدء و يتم تضمينها في مُعَرِفَات. هذه الموصفات القياسية تتوفر من موقع الويب Unicode Consortium.

ليتم إعتبار معرفين مميزين , فإنهما يجب أن يختلفا بأكثر من مجرد حالتهما.

الكلمات الأساسية

برامج التحويل البرمجي

المحولات البرمجية للغات المتوافقة مع CLS توفر آلية للرجوع إلى المُعَرِفَات التي تتوافق مع الكلمات المفتاحية. المحولات البرمجية للغات المتوافقة مع CLS توفر آلية لتعريف و تجاوز الأساليب الظاهرية ذات الأسماء التي هي كلمات مفتاحية في اللغة.

التفرد

الكل

كل الأسماء داخل النطاق المتوافق مع CLS يجب أن تكون مميزة ، حتى إذا كانت الأسماء لنوعين مختلفين من الأعضاء , باستثناء حيث تكون الأسماء متطابقة و تُحَل من خلال التحميل الزائد. على سبيل المثال، الـ CLS لا يسمح لنوع مفرد باستخدام الاسم نفسه لأسلوب و حقل.

التوقيعات

الكل

يجب أن تكون كل أنواع الإرجاع و المعلمات التي تظهر في توقيع نوع أو عضو متوافقة مع CLS.

الأنواع

   

   

الأنواع الأولية

الكل

مكتبة فئات .NET Framework تتضمن الأنواع التي تتوافق مع أنواع البيانات الأولية التي تستخدمها المحولات البرمجية. من تلك الأنواع , التالي متوافق مع CLS: Byte, و Int16, و Int32, و Int64, و Single, و Double, و Boolean, و Char, و Decimal, و IntPtr, و String. لمزيد من المعلومات حول هذه الأنواع ، راجع جدول الأنواع في ‏‫نظرة عامة على مكتبة فئات NET Framework..

الأنواع المعلبة

الكل

أنواع القيم المعلبة (أنواع القيم التي تم تحويلها إلى كائنات) ليست جزءاً من الـ CLS. بدلاً من ذلك، استخدم System.Object ، أو System.ValueType, أو System.Enum ، بالشكل المناسب.

Visibility

الكل

تعريفات النوع و العضو لا يجب أن تتضمن أنواع أقل قابلية للرؤية أو قابلية للوصول إليها من النوع أو العضو الذي يتم تعريفه.

أساليب الواجهة

برامج التحويل البرمجي

المحولات البرمجية للغات المتوافقة مع CLS يجب أن يكون لديها قواعد بناء جملة لموقف حين ينفذ نوع مفرد واجهتين و كلتا هاتين الواجهتين تتطلب تعريف أسلوب بنفس الاسم و التوقيع. مثل تلك الأساليب يجب أن تُعَتَبر مميزة و لا تحتاج أن يكون لها نفس التنفيذ.

الإغلاق

الكل

الأعضاء الفردية للواجهات و الفئات المجردة المتوافقة مع CLS , يجب أن تُعَرَف لتَكُون مُتَوَافِقَة مع CLS.

استدعاء الدالة الإنشائية

الكل

قبل أن تصل الدالة الإنشائية إلى أي بيانات مثيل موروثة , فإنها يجب أن تستدعي الدالة الإنشائية للفئة الأساسية.

المراجع المكتوبة

الكل

المراجع المكتوبة ليست متوافقة مع CLS. (المرجع المكتوب هو بناء خاص يحتوي على مرجع إلى كائن و مرجع إلى نوع. المراجع المكتوبة تُمَكِن وقت تشغيل اللغة العامة من توفير نمط دعم C++ للأساليب التي لديها عدد متغير من الوسائط.)

أعضاء النوع

   

   

التحميل الزائد

الكل

الخواص و الأساليب و الدوال الإنشائية المفهرسة مسموح لها أن تكون محملة بشكل زائد ; الحقول و الأحداث يجب أن لا تكون محملة بشكل زائد.

الخصائص يجب أن لا تحمل تحميلا زائداً حسب النوع (أي ، بواسطة نوع الإرجاع الخاص بأسلوبها النائل) ، و لكن يتم السماح لها بأن تكون محملة بشكل زائد بأعداد مختلفة أو أنواع من الفهارس.

الأساليب مسموح لها أن تحمل تحميلاً زائداً فقط بناءاً على عدد و أنواع المعلمات الخاصة بها , و في حالة الأساليب العامة , عدد معلماتها العامة.

التحميل الزائد لعوامل التشغيل ليس في الـ CLS. ومع ذلك ، الـ CLS يوفر إرشادات حول توفير أسماء مفيدة (مثل Add()) و تعيين بت في بيانات التعريف. المحولات البرمجية التي تختار أن تدعم التحميل الزائد لعوامل التشغيل ينبغي أن تتبع هذه الإرشادات و لكنها ليست مضطرة للقيام بذلك.

تفرد الأعضاء المحملة بشكل زائد

الكل

الحقول و الأنواع المتداخلة يجب أن تكون مميزة عن طريق مقارنة المعرف وحده. الأحداث , و الخصائص , و الأساليب التي لها نفس الاسم (بمقارنة المُعَرِف) يجب أن تختلف بأكثر من مجرد نوع الإرجاع .

عوامل تشغيل التحويل

الكل

إذا كان op_Implicit أو op_Explicit محملة تحميلاً زائداً على نوع إرجاعها ، يجب توفير وسيلة بديلة من توفير التحويل.

الأساليب

   

   

إمكانية الوصول إلى الأساليب المتجاوزة

الكل

إمكانية الوصول لا يجب أن تُغَيَر عند تجاوز الأساليب الموروثة , فيما عدا عند تجاوز أسلوب موروث من تجميع مختلف مع إمكانية الوصول FamilyOrAssembly . في هذه الحالة، يجب أن يكون التجاوز له إمكانية وصول العائلة .

قوائم الوسيطة

الكل

اصطلاح الاستدعاء الوحيد المدعوم من قبل الـ CLS هو اصطلاح الاستدعاء المدار القياسي ; قوائم الوسيطة متغيرة الطول غير مسموح بها. (استخدم الكلمة المفتاحية ParamArray في Microsoft Visual Basic و الكلمة المفتاحية params في C# لدعم عدد متغير من الوسيطات.)

Properties

   

   

بيانات تعريف أسلوب استرجاع القيمة

برامج التحويل البرمجي

الأسلوبان النائل و المُعَيِّن اللذان يقومان بتنفيذ أساليب خاصية يُعَلّمَانِ بالمعرف mdSpecialName في بيانات التعريف.

المُعَدِّلات

الكل

الخاصية و أساليب استرجاع القيمة الخاصة بها يجب أن تكون جميعها ثابتة , أو أن تكون جميعها ظاهرية , أو أن تكون جميعها مثيل .

أسماء أسلوب استرجاع القيمة

الكل

الخصائص يجب أن تتبع نماذج تسمية معينة. لخاصية باسم Name , الأسلوب النائل , إذا تم تعريفه , سيُسَمَى get_Name و الأسلوب المُعَيِّن , إذا تم تعريفه سيُسَمَى set_Name .

نوع الإرجاع و الوسيطات

الكل

نوع الخاصية هو نوع الإرجاع للنائل و هو نوع الوسيطة الأخيرة للمُعَيِّن. أنواع معلمات الخاصية تكون هي أنواع معلمات النائل و أنواع كل المعلمات ما عدا المعلمة الأخيرة للمُعَيِّن. كل هذه الأنواع يجب أن تكون متوافقة مع CLS و لا يمكن أن تكون مُؤشرات مُدَارة ; فإنها يجب أن لا تُمَرر بالمرجع.

أحداث

   

   

أساليب الحدث

الكل

الأسلوبان لإضافة و إزالة حدث يجب أن يكونا موجودين معاً أو غير موجودين معاً.

بيانات تعريف أسلوب الحدث

برامج التحويل البرمجي

الأساليب التي تنفذ حدث يجب أن تُعَلّم بالمُعَرِف mdSpecialName في بيانات التعريف.

إمكانية الوصول إلى أسلوب استرجاع القيمة

الكل

إمكانيات وصول الأساليب لإضافة , و إزالة , و إصدار حدث يجب أن تكون متطابقة.

المُعَدِّلات

الكل

الأساليب لإضافة , و إزالة , و إصدار حدث يجب أن تكون جميعها ثابتة ، أو تكون جميعها ظاهرية ، أو تكون جميعها مثيل .

أسماء أسلوب الحدث

الكل

الأحداث يجب أن تتبع نماذج تسمية معينة. لحدث باسم MyEvent ، أسلوب الإضافة , إذا تم تعريفه , سيُسَمَى add_MyEvent ، و أسلوب الإزالة , إذا تم تعريفه , سيُسَمَى remove_MyEvent و أسلوب الرفع سيُسَمَى raise_MyEvent .

الوسيطات

الكل

الأساليب لإضافة و إزالة حدث يجب أن تأخذ معلمة واحدة نوعها يُعَرِّف نوع الحدث , و ذلك النوع يجب أن يكون مشتقاً من System.Delegate.

أنواع المؤشرات

   

   

المؤشرات

الكل

أنواع المؤشر و أنواع مؤشر الدالة ليست متوافقة مع CLS.

الواجهات

   

   

تواقيع العضو

الكل

الواجهات المتوافقة مع CLS يجب أن لا تتطلب تعريف أساليب غير متوافقة مع CLS حتى تُنَفِذها.

مُعَدِّلات العضو.

الكل

الواجهات المتوافقة مع CLS لا يُمكِنُها تعريف أساليب ثابتة و لا حقول. يتم السماح لها بتعريف خصائص , و أحداث , و أساليب ظاهرية.

أنواع المراجع

   

   

استدعاء الدالة الإنشائية

الكل

لأنواع المرجع , الدوال الإنشائية للكائن يتم استدعاءها فقط كجزء من إنشاء كائن و تتم تهيئة الكائنات مرة واحدة فقط.

أنواع الفئة

   

   

الوراثة

الكل

الفئة المتوافقة مع CLS يجب أن ترث من فئة متوافقة مع CLS ( System.Object متوافقة مع CLS).

المصفوفات1

   

   

أنواع العناصر

الكل

عناصر المصفوفة يجب أن تكون أنواع متوافقة مع CLS.

الأبعاد

الكل

المصفوفات يجب أن يكون لها عدد ثابت من الأبعاد , أكبر من الصفر.

الحدود

الكل

كل أبعاد المصفوفة يجب أن يكون الحد الأدنى لها بصفر.

عمليات التعداد

   

   

النوع الضمني

الكل

النوع الضمني للتعداد يجب أن يكون من نوع العدد الصحيح المضمن في CLS ( Byte ، أو Int16 ، أو Int32, أو Int64).

FlagsAttribute

برامج التحويل البرمجي

وجود السمة المخصصة System.FlagsAttribute في تعريف تعداد تشير إلى أنه يجب التعامل مع التعداد كمجموعة من حقول بت (علامات) , و يشير غياب تلك السمة يشير أن النوع يجب أن يتم عرضه كمجموعة من الثوابت المُعَدَدَة. من المستحسن أن تستخدام اللغات إما FlagsAttribute أو قاعدة بناء جملة خاصة باللغة للتمييز بين هذين النوعين من التعدادات.

أعضاء الحقل

الكل

الحقول الثابتة الحرفية من تعداد يجب أن تكون من نفس نوع التعداد نفسه.

Exceptions

   

   

الوراثة

الكل

الكائنات التي يتم طرحها يجب أن تكون من النوع System.Exception أو ترث من System.Exception.

السمات المخصصة

   

   

ترميزات القيمة

برامج التحويل البرمجي

المحولات البرمجية المتوافقة مع CLS مطلوب منها التعامل مع مجموعة فرعية فقط من ترميزات السمات المخصصة (تمثيل السمات المخصصة في بيانات التعريف). الأنواع الوحيدة المسموح لها أن تظهر في تلك الترميزات هي: System.Type ، و System.String ، و System.Char ، و System.Boolean ، و System.Byte ، و System.Int16 ، و System.Int32 ، و System.Int64 ، و System.Single ، و System.Double ، و أي نوع تعداد مبني على نوع العدد الصحيح المتوافق مع CLS.

بيانات التعريف

   

   

التوافق مع CLS

الكل

الأنواع التي يختلف توافقها مع CLS مع نظيره للتجميع حيث تم تعريفها يجب أن تُعَلّم بـ System.CLSCompliantAttribute. و بشكل مماثل، الأعضاء التي يختلف توافقها مع CLS مع نظيره لنوعها يجب أيضاً أن تُعَلّم. إذا كان عضو أو نوع مُعَلّم كغير متوافق مع CLS ، يجب توفير بديل متوافق مع CLS.

عام

أسماء الأنواع

برامج التحويل البرمجي

اسم النوع العام يجب يُرَمِز عدد معلمات النوع المُعَرَفة في النوع. اسم النوع العام المتداخل يجب أن يُرَمِز عدد معلمات النوع المقدمة إلى النوع حديثاً.

الأنواع المتداخلة

برامج التحويل البرمجي

الأنواع المتداخلة يجب أن يكون لديها على الأقل عدد من المعلمات العامة مثل النوع المُرفق. المعلمات العامة في نوع متداخل تناظر حسب الموضع المعلمات العامة في نوعها المُرفق.

الـقيود

الكل

النوع العام يجب أن يُعَرِف قيود كافية لضمان أن أي قيود على النوع الأساسي أو الواجهات يتم الوفاء بها من قبل قيود النوع العام.

أنواع القيد

الكل

الأنواع المستخدمة كقيود على معلمات عامة يجب أن تكون نفسها متوافقة مع CLS.

تواقيع العضو

الكل

قابلية الرؤية و إمكانية الوصول للأعضاء (بما في ذلك الأنواع المتداخلة) في نوع عام مُهَيأ تُعتَبر محصورة في مجال تهيئة مُعَيَنة بدلاً من تعريف النوع العام ككل.

الأساليب العامة

الكل

لكل أسلوب عام مجرد أو ظاهري ، يجب أن يكون هناك تنفيذ ثابت (غير مجرد).

1. الصفائف المسننة — أي، صفائف من الصفائف — متوافقة مع CLS. في .NET Framework الإصدار 1.0 ، يُبَلِغ المحول البرمجي لـ C# أنها ليست كذلك خطأً.

راجع أيضًا:

المبادئ

إمكانية التشغيل المتداخل لللغات المتعددة