سي شارب: الفرق بين النسختين
[مراجعة غير مفحوصة] | [مراجعة غير مفحوصة] |
تم حذف المحتوى تمت إضافة المحتوى
ط بوت:إزالة تشكيل وصلة |
|||
سطر 26:
'''سي#''' {{إنج|#C}} (تلفظ سي شارب) هي [[لغة برمجة]] [[نمط برمجة#اللغات متعددة أنماط البرمجة|متعددة الأنماط]] تتمتع بكونها [[تنميط سكوني|سكونية التنميط]] و[[برمجة أمرية|أمرية]] و[[برمجة تعريفية|تعريفية]] و[[برمجة وظيفية|وظيفية]] و[[برمجة إجرائية|إجرائية]] و[[برمجة عمومية|عمومية]] و[[شيئية المنحى|شيئية المنحى (غرضية التوجه)]] (باستخدام [[صنف (علوم الحاسب)|الصفوف]]) كما تخضع لمبادئ [[برمجة تركيبية المنحى|البرمجة التركيبية المنحى]].
قامت [[مايكروسوفت]] بتطوير هذه اللغة في إطار عملها على تطوير [[إطار عمل دوت نت|دوت
|مسار= http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf
|العنوان= توصيف لغة #C (بالإنجليزية)
سطر 209:
* استنباط نمط الباني
* [[مراحل إصدار البرمجيات#المرحلة بيتا|مرحلة تقييم المجتمع للتكنولوجيا]] (أيلول 2012)
* [[نحو (لغات برمجة)|
* صفات قابلة للقراءة فقط
* استخدام التعابير كصفات (صفات لامبدا)
سطر 234:
=== المزايا الفارقة ===
تتفرد لغة سي# عن غيرها من [[لغات برمجة]] [[إطار عمل دوت نت]] في كونها مرتبطة بشكل وثيق بمزايا البنية التحتية المشتركة للغات البرمجة (CLI)، فعلى سبيل المثال تنسب معظم الأنماط الحقيقية إلى قرائنها من أنماط القيمة {{إنج|value-types}} الموجودة في CLI. على الرغم من ذلك فإن توصيف اللغة لا يتطرق إلى متطلبات توليد الكود الخاصة [[مصرف (برمجة)|
* تدعم سي# التصريح الضمني عن المتحولات قوية التنميط عن طريق [[كلمة مفتاحية|الكلمة المفتاحية]] {{كود|var}} بالإضافة إلى التصريح الضمني عن المصفوفات المنمطة عن طريق الكلمة المفتاحية متبوعة بمهيئ المجموعة.
* إن إمكانية الميتا-برمجة {{إنج|Meta Programming}} من خلال استخدام السمات {{إنج|Attributes}} هي جزءً من توصيف اللغة. توفر العديد من هذه السمات وظيفية مطابقة لتلك التي توفرها موجهات قبل التصريف المعتمدة على المنصة المدعومة من قبل [[جي.سي.سي]] و[[مايكروسوفت فيجوال سي++|فيجوال سي++]].
سطر 266:
# أنماط المرجع
# أنماط القيمة
تتصف الكائنات من نمط القيمة بأنها لا تملك ''محدداً مرجعياً'' ولا تمتلك خصائص المقارنة المرجعية - فمعاملات المساواة وانعدام المساواة بين أنماط القيمة تقوم بمقارنة القيمة الحقيقية للبيانات الموجودة ضمن الكائنات ما لم تكن معاملات المقارنة هذه محملةً بشكل زائد. تُشتق أنماط القيمة من النمط {{كود|System.ValueType}} ولديها دائماً قيمة افتراضية كما يمكن إنشاؤها ونسخها في أي وقت. من أهم القيود المفروضة على أنماط القيمة هو عدم المقدرة على الاشتقاق من بعضها البعض (إلا أنها تستطيع تحقيق الواجهات) كما أنها لا يمكن أن تحوي [[دالة البناء (برمجة كائنية التوجه)|
بمقابل ذلك تمتلك أنماط المرجع مفهوم المحدد المرجعي - أي أن كل كائن من النمط المرجعي يمتلك محدداً متميزاً عن محددات بقية الكائنات حتى وإن كان البيانات الموجودة ضمن كائنين هي ذاتها. ينعكس هذا المفهوم على عمليات مساواة أو عدم مساواة أنماط المرجع حيث تقوم باختبار المساواة المرجعية ولا تختبر مساواة القيم بينها إلا في حال تحميل المعاملات المقابلة بشكل زائد (كما هو الحال بالنسبة للنمط {{كود|System.String}}. بشكل عام لا يمكن إنشاء كائنات من النمط المرجعي ولا نسخ كائن موجود ولا إجراء مقارنات بين قيم كائنين مرجعيين، على الرغم من ذلك توفر بين أنماط المرجع خدمات كهذه عبر التصريح عن بانٍ عام أو عبر تحقيق الواجهة الموافقة (مثل {{كود|ICloneable}} و{{كود|IComparable}}). بعض الأمثلة على أنماط المرجع النمط {{كود|Object}} (الصف الأساسي الذي تشتق منه كافة الصفوف الأخرى) والنمط {{كود|System.String}} (سلسلة محرفية من النمط [[يونيكود]]) والنمط {{كود|System.Array}} (الصف الأساسي الذي تشتق منه كافة المصفوفات).
سطر 311:
== مثال "أهلاً بالعالم" ==
فيما يلي برنامج بسيط بلغة سي#، وهو إصدار من برنامج [[برنامج أهلا بالعالم|
<syntaxhighlight lang=CSharp>
|