لغة البرمجة سي شارب

لغة C# ( تُلفظ / ˌsiːˈʃɑːrp / ، انظر SHARP ) هي لغة برمجة عامة الأغراض وعالية المستوى تدعم نماذج برمجة متعددة . تشمل C# الكتابة الثابتة ، [ 17 ] : 4 الكتابة القوية ، والنطاق المعجمي ، والبرمجة الإجرائية ، والبرمجة التصريحية ، والبرمجة الوظيفية ، والبرمجة العامة ، [ 17 ] : 22 البرمجة الكائنية ( القائمة على الأصناف )، والبرمجة الموجهة بالمكونات . [ 1 ]

كان المصممون الرئيسيون للغة البرمجة C# هم أندرس هيلسبرغ ، وسكوت ويلتاموث، وبيتر غولد من شركة مايكروسوفت . [ 1 ] تم توزيعها على نطاق واسع لأول مرة في يوليو 2000 [ 1 ] ، ثم اعتُمدت لاحقًا كمعيار دولي من قِبل إيكما (ECMA-334) في عام 2002، ومن قِبل المنظمة الدولية للمعايير / اللجنة الكهروتقنية الدولية (ISO/IEC 23270 و20619 [ c ] ) في عام 2003. أطلقت مايكروسوفت لغة C# بالتزامن مع إطار عمل .NET وبرنامج مايكروسوفت فيجوال ستوديو ، وكلاهما، من الناحية التقنية، مغلق المصدر . في ذلك الوقت، لم تكن لدى مايكروسوفت أي منتجات مفتوحة المصدر. بعد أربع سنوات، في عام 2004، بدأ مشروع مجاني ومفتوح المصدر يُدعى Mono ، والذي وفّر مُترجمًا وبيئة تشغيل متعددة المنصات للغة البرمجة C#. بعد عقد من الزمن، أصدرت مايكروسوفت برنامج Visual Studio Code (محرر أكواد)، وبرنامج Roslyn (مترجم)، ومنصة .NET الموحدة (إطار عمل برمجي)، وكلها تدعم لغة C# وهي مجانية ومفتوحة المصدر ومتعددة المنصات. انضمت Mono أيضًا إلى مايكروسوفت، لكنها لم تُدمج في .NET.

اعتبارًا من نوفمبر 2025 ،أحدث إصدار مستقر من اللغة هو C# 14. [ 18 ] [ 19 ] [ 20 ]

أهداف التصميم

يحدد معيار Ecma أهداف التصميم التالية للغة C#: [ 1 ]

تاريخ

الشعارات السابقة للغة C#

أثناء تطوير إطار عمل .NET ، كُتبت مكتبات الفئات في الأصل باستخدام نظام مُترجم للتعليمات البرمجية المُدارة يُسمى Simple Managed C (SMC). [ 23 ] [ 24 ] في يناير 1999، شكّل أندرس هيلسبرغ فريقًا لبناء لغة جديدة آنذاك تُسمى COOL، والتي تعني " لغة كائنية التوجه شبيهة بلغة C ". [ 25 ]

كانت مايكروسوفت قد فكرت في الإبقاء على اسم "COOL (لغة برمجة كائنية التوجه شبيهة بلغة C)" كاسم نهائي للغة، لكنها عدلت عن ذلك لأسباب تتعلق بالعلامة التجارية. وبحلول الوقت الذي أُعلن فيه عن مشروع .NET رسميًا في مؤتمر المطورين المحترفين في يوليو 2000 ، كانت اللغة قد أُعيد تسميتها إلى C#، ونُقلت مكتبات الفئات وبيئة تشغيل ASP.NET إلى لغة C#.

كان هيلسبرغ المصمم الرئيسي للغة C# وكبير مهندسيها في مايكروسوفت، وقد شارك سابقًا في تصميم Turbo Pascal و Embarcadero Delphi (المعروفة سابقًا باسم CodeGear Delphi و Inprise Delphi و Borland Delphi) و Visual J++ . وقد صرّح في مقابلات وأوراق بحثية تقنية بأنّ عيوبًا في معظم لغات البرمجة الرئيسية (مثل C++ و Java و Delphi و Smalltalk ) كانت الدافع وراء تطوير بيئة التشغيل المشتركة للغة (CLR)، والتي بدورها شكّلت أساس تصميم لغة C#. [ 26 ]

وصف جيمس جوسلينج ، مبتكر لغة البرمجة جافا عام 1994، وبيل جوي ، أحد مؤسسي شركة صن مايكروسيستمز ، الشركة المطورة للغة جافا، لغة سي شارب بأنها "تقليد" لجافا؛ وأضاف جوسلينج: "سي شارب هي نوع من جافا مع حذف الموثوقية والإنتاجية والأمان." [ 27 ] [ 28 ]

في يوليو 2000، قال هيلسبرغ إن لغة C# "ليست نسخة من لغة جافا" وهي "أقرب بكثير إلى لغة C++" في تصميمها. [ 29 ]

منذ إصدار C# 2.0 في نوفمبر 2005، تطورت لغتا C# وجافا في مسارات متباينة بشكل متزايد، لتصبحا لغتين مختلفتين تمامًا. كان أحد أبرز هذه الاختلافات إضافة الأنواع العامة (Generics) إلى كلتا اللغتين، مع اختلاف كبير في تطبيقاتها. تستخدم C# التجسيد (Reification) لتوفير كائنات عامة "من الدرجة الأولى" يمكن استخدامها كأي فئة أخرى، مع توليد الكود عند تحميل الفئة. [ 30 ]

أضافت لغة C# العديد من الميزات الرئيسية لدعم البرمجة الوظيفية، وبلغت ذروتها في امتدادات LINQ التي صدرت مع C# 3.0 وإطار عملها الداعم من تعابير لامدا ، وأساليب الامتداد ، والأنواع المجهولة . [ 31 ] تُمكّن هذه الميزات مبرمجي C# من استخدام تقنيات البرمجة الوظيفية، مثل الإغلاقات ، عندما يكون ذلك مفيدًا لتطبيقاتهم. تُساعد امتدادات LINQ والاستيرادات الوظيفية المطورين على تقليل كمية التعليمات البرمجية المتكررة في المهام الشائعة مثل الاستعلام عن قاعدة بيانات، أو تحليل ملف XML، أو البحث في بنية بيانات، مما يُحوّل التركيز إلى منطق البرنامج الفعلي لتحسين سهولة القراءة والصيانة. [ 32 ]

كانت لغة C# تمتلك تميمة تسمى آندي (سميت على اسم أندرس هيلسبرغ ). تم إيقافها في 29 يناير 2004. [ 33 ]

قُدِّمَت لغة C# في الأصل إلى اللجنة الفرعية SC 22 التابعة للجنة الفنية المشتركة 1 التابعة للمنظمة الدولية للمعايير/اللجنة الكهروتقنية الدولية للمراجعة، [ 34 ] بموجب معيار ISO/IEC 23270:2003، [ 35 ] ثم سُحِبَت وأُقِرَّت بموجب معيار ISO/IEC 23270:2006. [ 36 ] سُحِبَ معيار 23270:2006 بموجب معيار 23270:2018 وأُقِرَّ مع هذه النسخة. [ 37 ]

اسم

استخدمت مايكروسوفت اسم C# لأول مرة في عام 1988 لنسخة معدلة من لغة C مصممة للتجميع التزايدي. [ 38 ] لم يكتمل هذا المشروع، وأعيد استخدام الاسم لاحقًا.

استُلهم اسم "دو دييز" من التدوين الموسيقي، حيث يشير رمز الرفع إلى رفع درجة النوتة الموسيقية بمقدار نصف نغمة . [ 39 ] وهذا مشابه لاسم لغة C++ ، حيث يشير الرمز "++" إلى زيادة قيمة المتغير بمقدار 1 بعد تقييمه. كما يشبه رمز الرفع ربط أربعة رموز "+" (في شبكة ثنائية الأبعاد)، مما يوحي بأن اللغة هي تطوير للغة C++. [ 40 ]

نظراً للقيود التقنية للعرض (الخطوط القياسية، المتصفحات، إلخ)، ولأن معظم تخطيطات لوحات المفاتيح تفتقر إلى رمز الرفع ( U+266F علامة الرفع الموسيقية ( & sharp; ) )، فقد تم اختيار علامة الرقم ( U+0023 # علامة الرقم ( & num; ) ) لتقريب رمز الرفع في الاسم المكتوب للغة البرمجة. [ 41 ] وينعكس هذا الاصطلاح في مواصفات لغة C# ECMA-334. [ 1 ]

استُخدمت اللاحقة "#" في عدد من لغات البرمجة الأخرى المتوافقة مع بيئة مايكروسوفت .NET ، والتي تُعدّ صيغًا مختلفة من لغات موجودة، بما في ذلك J# (لغة .NET صممتها مايكروسوفت أيضًا، وهي مشتقة من Java 1.1)، و A# (المشتقة من Ada )، ولغة البرمجة الوظيفية F# . [ 42 ] كان يُطلق على التنفيذ الأصلي للغة Eiffel لبيئة .NET اسم Eiffel# ، [ 43 ] وهو اسم تم التخلي عنه بعد دعم لغة Eiffel الكاملة . كما استُخدمت هذه اللاحقة أيضًا للمكتبات ، مثل Gtk# ( غلاف .NET لمكتبات GTK ومكتبات GNOME الأخرى ) و Cocoa# (غلاف لمكتبة Cocoa ).

الإصدارات

 يتم تطوير نص المعايير (بدءًا من C# 6) على منصة GitHub  . تم تقديم معيار C# 7 إلى Ecma  وتمت الموافقة عليه في ديسمبر 2023. اعتبارًا من يناير 2024، يجري حاليًا تطوير معيار C# 8، مع الإشارة إلى مقترحات اللغة المعتمدة .

إصدار C#مواصفات اللغةتاريخ.شبكةVisual Studio
إيكماISO/IECمايكروسوفت
1.0ECMA-334:2003، ديسمبر 2002ISO/IEC 23270:2003، أبريل 2003يناير 2002يناير 2002إطار عمل .NET 1.0فيجوال ستوديو دوت نت 2002
1.1 1.2أكتوبر 2003أبريل 2003فيجوال ستوديو دوت نت 2003
2.0 [ 44 ]ECMA-334:2006، يونيو 2006ISO/IEC 23270:2006، سبتمبر 2006سبتمبر 2005 [ د ]نوفمبر 2005فيجوال ستوديو 2005، فيجوال ستوديو 2008
3.0 [ 45 ]لا أحدأغسطس 2007نوفمبر 2007
فيجوال ستوديو 2008
4.0 [ 47 ]أبريل 2010أبريل 2010فيجوال ستوديو 2010
5.0 [ 48 ]ECMA-334:2017، ديسمبر 2017ISO/IEC 23270:2018، ديسمبر 2018يونيو 2013أغسطس 2012فيجوال ستوديو 2012، فيجوال ستوديو 2013
6.0 [ 49 ]ECMA-334:2022، يونيو 2022لا أحدمسودةيوليو 2015
فيجوال ستوديو 2015
7.0 [ 50 ] [ 51 ]ECMA-334:2023، ديسمبر 2023ISO/IEC 20619:2023، سبتمبر 2023مقترح المواصفاتمارس 2017Visual Studio 2017 الإصدار 15.0 [ 52 ]
7.1 [ 53 ]مقترح المواصفاتأغسطس 2017
  • .NET Core 2.0
Visual Studio 2017 الإصدار 15.3 [ 54 ]
7.2 [ 55 ]مقترح المواصفاتنوفمبر 2017Visual Studio 2017 الإصدار 15.5 [ 56 ]
7.3 [ 57 ]مقترح المواصفات مؤرشف في 7 مارس 2021 على موقع Wayback Machineمايو 2018
Visual Studio 2017 الإصدار 15.7 [ 58 ]
8.0 [ 59 ]لا أحدمقترح المواصفاتسبتمبر 2019
  • .NET Core 3.0
  • .NET Core 3.1
Visual Studio 2019 الإصدار 16.3 [ 60 ]
9.0 [ 61 ]مقترح المواصفاتنوفمبر 2020
  • .NET 5.0
Visual Studio 2019 الإصدار 16.8 [ 62 ]
10.0 [ 63 ]مقترح المواصفاتنوفمبر 2021
  • .NET 6.0
Visual Studio 2022 الإصدار 17.0 [ 64 ]
11.0 [ 65 ]مقترح المواصفاتنوفمبر 2022
  • .NET 7.0
Visual Studio 2022 الإصدار 17.4 [ 66 ]
12.0 [ 67 ]مقترح المواصفاتنوفمبر 2023
  • .NET 8.0
Visual Studio 2022 الإصدار 17.8 [ 68 ]
13.0 [ 69 ]مقترح المواصفاتنوفمبر 2024
  • .NET 9.0
Visual Studio 2022 الإصدار 17.12 [ 70 ]
14.0 [ 71 ]مقترح المواصفاتنوفمبر 2025
  • .NET 10.0
Visual Studio 2026 الإصدار 18.0 [ 72 ]

بناء الجملة

تتشابه البنية الأساسية للغة C# مع تلك الخاصة بلغات أخرى من نمط C مثل C و Objective-C و C++ و Java، وخاصةً:

السمات المميزة

من أبرز سمات لغة C# التي تميزها عن لغات C و C++ و Java، كما هو موضح:

سهولة الحمل

صُممت لغة C# لتكون لغة البرمجة التي تعكس بشكل مباشر بنية اللغة المشتركة  (CLI). [ 73 ] تتوافق معظم أنواعها الجوهرية مع أنواع القيم التي يُنفذها إطار عمل CLI. مع ذلك، لا تُحدد مواصفات اللغة متطلبات توليد الكود للمُترجم: أي أنها لا تُشترط أن يستهدف مُترجم C# بيئة تشغيل اللغة المشتركة (CLR)، أو يُولد لغة وسيطة مشتركة (CIL)، أو يُولد أي تنسيق مُحدد آخر. كما يُمكن لبعض مُترجمات C# توليد كود الآلة، على غرار المُترجمات التقليدية للغات Objective-C وC وC++ وAssembly و Fortran . [ 74 ] [ 75 ]

الكتابة

تدعم لغة C# تعريف المتغيرات ذات الأنواع المحددة بقوة وضمنياً باستخدام الكلمة المفتاحية `<string>` var، [ 17 ] : 470 ، والمصفوفات ذات الأنواع المحددة ضمنياً باستخدام الكلمة المفتاحية `<string>` new[]متبوعةً بمعامل تهيئة المجموعة. [ 17 ] : 80 [ 21 ] : 58

ينقسم نظام أنواعها إلى فئتين: أنواع القيم، مثل الأنواع العددية المدمجة والهياكل المعرفة من قبل المستخدم، والتي تُمرر تلقائيًا كنسخ عند استخدامها كمعاملات، وأنواع المراجع، بما في ذلك المصفوفات، ومثيلات الفئات، والسلاسل النصية، والتي تُمرر فقط مؤشرًا إلى الكائن المعني. ونظرًا لمعالجتها الخاصة لعامل المساواة وعدم قابليتها للتغيير ، فإن السلاسل النصية ستتصرف، عمليًا، كما لو كانت قيمًا. بل يمكن للمبرمج استخدامها كعلامات للحالات . وعند الضرورة، تُغلّف أنواع القيم تلقائيًا. [ 76 ]

تدعم لغة C# نوع البيانات المنطقية (Boolean ) بشكل صارم . تتطلب boolالعبارات التي تأخذ شروطًا، مثل `true` whileو`false` if، تعبيرًا من نوع يُقيّم إلى trueقيمة منطقية. بينما تحتوي لغة C++ أيضًا على نوع منطقي، إلا أنه يمكن تحويله بحرية من وإلى الأعداد الصحيحة، وتتطلب تعبيرات مثل `true` و` if (a)false` فقط أن aيكون `true` قابلاً للتحويل إلى نوع منطقي، مما يسمح aبأن يكون `true` عددًا صحيحًا أو مؤشرًا. لا تسمح لغة C# بهذا النهج الذي يُحدد معنى "صحيح أو خطأ" للعدد الصحيح، وذلك لأن إجبار المبرمجين على استخدام تعبيرات تُرجع قيمة منطقية بالضبط boolيمكن أن يمنع أنواعًا معينة من أخطاء البرمجة، مثل if (a = b)استخدام التعيين =بدلًا من المساواة ==.

تُعتبر لغة C# أكثر أمانًا من حيث أنواع البيانات مقارنةً بلغة C++. التحويلات الضمنية الوحيدة المُطبقة افتراضيًا هي تلك التي تُعتبر آمنة، مثل توسيع الأعداد الصحيحة. ويتم تطبيق هذا في وقت الترجمة، وأثناء الترجمة الفورية ، وفي بعض الحالات، في وقت التشغيل. لا تحدث أي تحويلات ضمنية بين القيم المنطقية والأعداد الصحيحة، ولا بين عناصر التعداد والأعداد الصحيحة (باستثناء القيمة الحرفية 0، التي يمكن تحويلها ضمنيًا إلى أي نوع مُعدّد). يجب تحديد أي تحويل يُعرّفه المستخدم صراحةً على أنه صريح أو ضمني، على عكس مُنشئات النسخ وعوامل التحويل في لغة C++، والتي تكون ضمنية افتراضيًا.

تتمتع لغة C# بدعم صريح للتغاير والتغاير العكسي في الأنواع العامة، [ 17 ] : 144 [ 21 ] : 23 على عكس لغة C++ التي تتمتع بدرجة معينة من الدعم للتغاير العكسي ببساطة من خلال دلالات أنواع الإرجاع في الطرق الافتراضية.

يتم وضع أعضاء التعداد في نطاقهم الخاص .

لا تسمح لغة C# بالمتغيرات أو الدوال العامة. يجب تعريف جميع الطرق والأعضاء داخل الفئات. يمكن استخدام الأعضاء الثابتة للفئات العامة بدلاً من المتغيرات والدوال العامة.

لا يمكن للمتغيرات المحلية أن تحجب متغيرات الكتلة المحيطة بها، على عكس لغتي C و C++، ولكن يمكنها أن تحجب أسماء مستوى النوع.

البرمجة الوصفية

يمكن تحقيق البرمجة الوصفية بعدة طرق:

  • يتم دعم خاصية الانعكاس من خلال واجهات برمجة تطبيقات .NET، مما يتيح سيناريوهات مثل فحص بيانات التعريف الخاصة بالنوع واستدعاء الأساليب الديناميكية.
  • تمثل أشجار التعبير [ 77 ] الشفرة البرمجية كشجرة بناء جملة مجردة ، حيث يمثل كل عقدة تعبيرًا يمكن فحصه أو تنفيذه. وهذا يُمكّن من التعديل الديناميكي للشفرة القابلة للتنفيذ أثناء التشغيل. تُضفي أشجار التعبير نوعًا من التماثل على اللغة.
  • في لغة C#، تُعدّ السمات بيانات وصفية يمكن إلحاقها بالأنواع أو الأعضاء أو التجميعات بأكملها ، وهي تُعادل التعليقات التوضيحية في لغة Java . ويمكن الوصول إلى السمات من قِبل المُصرّف والبرنامج عبر تقنية الانعكاس، مما يسمح لهما بتعديل سلوكهما. [ 78 ] وتُكرّر العديد من السمات الأصلية وظائف توجيهات المعالج المُسبق الخاصة بمنصة GCC وVisualC++.
  • System.Reflection.Emitمساحة الاسم، [ 79 ] التي تحتوي على فئات تصدر بيانات وصفية و CIL (الأنواع، والتجميعات، وما إلى ذلك) في وقت التشغيل .
  • توفر منصة مُجمِّع .NET (Roslyn) واجهة برمجة تطبيقات (API) للوصول إلى خدمات تجميع اللغات، مما يسمح بتجميع كود C# من داخل تطبيقات .NET. وتُتيح هذه المنصة واجهات برمجة تطبيقات للتحليل النحوي ( المعجمي ) للكود، والتحليل الدلالي ، والتجميع الديناميكي إلى لغة CIL، وإصدار الكود. [ 80 ]
  • تُمكّن مولدات المصدر، [ 81 ] وهي ميزة في مُصرّف Roslyn C#، من برمجة ما وراء الكود أثناء عملية التجميع. خلال عملية التجميع، يستطيع المطورون فحص الكود الذي يتم تجميعه باستخدام واجهة برمجة التطبيقات الخاصة بالمُصرّف، وتمرير كود مصدر C# إضافي مُولّد ليتم تجميعه.

الأساليب والوظائف

في لغة C#، تُعرَّف الدالة بأنها عنصر من عناصر الصنف يُمكن استدعاؤه كدالة ، وليس مجرد حقل لتخزين القيم ، أي متغير صنف أو متغير مثيل . [ 82 ] وكما هو الحال في لغات أخرى مشابهة من حيث البنية، مثل C++ و ANSI C ، فإن توقيع الدالة هو عبارة عن تعريف يتضمن بالترتيب التالي: أي كلمات مفتاحية اختيارية لتحديد إمكانية الوصول (مثل `value` private)، والتحديد الصريح لنوع القيمة المُعادة (مثل `value` int، أو الكلمة المفتاحية `value` voidإذا لم تُعاد أي قيمة)، واسم الدالة، وأخيرًا، سلسلة من مواصفات المعاملات مفصولة بفواصل بين قوسين، تتكون كل منها من نوع المعامل واسمه الرسمي، وقيمة افتراضية اختيارية تُستخدم عند عدم تحديد أي قيمة. على عكس معظم اللغات الأخرى، يجب تحديد المعاملات التي تُستدعى بالمرجع في تعريف الدالة وفي موقع الاستدعاء، ويمكن للمبرمج الاختيار بين `value` refو`value` out، حيث يسمح الأخير بتمرير متغير غير مُهيأ ستكون له قيمة محددة عند الإرجاع. [ 83 ] بالإضافة إلى ذلك، يمكن للمبرمج تحديد قائمة وسائط متغيرة الحجم بتطبيق الكلمة paramsالمفتاحية على المعامل الأخير. [ 84 ] بعض أنواع الدوال، مثل تلك التي تحصل على قيمة حقل أو تُعيّنها ببساطة عن طريق إرجاعها أو إسنادها، لا تتطلب توقيعًا كاملاً مُحددًا صراحةً، ولكن في الحالة العامة، يتضمن تعريف الصنف إعلان التوقيع الكامل لدواله. [ 85 ]

على غرار لغة C++، وعلى عكس لغة Java، يجب على مبرمجي C# استخدام الكلمة المفتاحية `scope` virtualللسماح بتجاوز الدوال بواسطة الفئات الفرعية. على عكس C++، يجب على المبرمج تحديد الكلمة المفتاحية `scope` صراحةً overrideعند القيام بذلك. [ 86 ] يهدف هذا إلى تجنب الخلط بين تجاوز الدالة وإعادة تحميلها، أي إخفاء التنفيذ الأول. للقيام بالتحميل الزائد، يجب على المبرمج تحديد الكلمة newالمفتاحية `scope`. [ 87 ] يمكن استخدام الكلمة المفتاحية `scope` sealedلمنع المزيد من عمليات التجاوز لدوال فردية أو فئات كاملة. [ 88 ]

تتيح أساليب الإضافة في لغة C# للمبرمجين استخدام الأساليب الثابتة كما لو كانت أساليب من جدول أساليب الفئة، مما يسمح لهم بإضافة أساليب مثيل افتراضية إلى فئة يرون أنها ضرورية لهذا النوع من الكائنات (ومثيلات الفئات المشتقة المعنية). [ 17 ] : 103-105 [ 21 ] : 202-203

يُتيح هذا النوع ربط الدوال أثناء التشغيل، مما يسمح باستدعاء الدوال كما في جافا سكريبت وتكوين الكائناتdynamic أثناء التشغيل . [ 17 ] : 114-118

تدعم لغة C# مؤشرات الدوال ذات الأنواع المحددة بدقة عبر الكلمة المفتاحية `input` delegate. وكما هو الحال في إطار عمل Qt ، حيث تُستخدم الإشارات والفتحات في لغة C++ ، فإن C# تمتلك دلالات خاصة بنمط النشر والاشتراك للأحداث، مع أنها تستخدم المندوبين لتحقيق ذلك. وعلى عكس الحقول، يمكن أن تكون المتغيرات جزءًا من واجهة، لأنها تتكون تقنيًا من دالتين افتراضيتين لإضافة المندوبين المراد استدعاؤهم وإزالتهم.event

توفر لغة C# استدعاءات الأساليب الشبيهة بلغة Java synchronized، عبر السمة [MethodImpl(MethodImplOptions.Synchronized)]، وتدعم الأقفال الحصرية المتبادلة عبر الكلمة المفتاحية lock.

ملكيات

تدعم لغة C# الفئات ذات الخصائص . يمكن أن تكون الخصائص دوال وصول بسيطة مع حقل داعم، أو دوال جلب وتعيين عشوائية. تكون الخاصية للقراءة فقط إذا لم يكن لها دالة تعيين. وكما هو الحال مع الحقول، يمكن أن توجد خصائص للفئة وخصائص للمثيل. يمكن أن تكون الطرق الأساسية من نوع virtualأو abstractمثل أي طريقة أخرى. [ 85 ]

منذ C# 3.0، أصبح الاختصار النحوي للخصائص المنفذة تلقائيًا متاحًا، [ 89 ] حيث يقوم الموصِّل (getter) والمعدِّل (setter) بتغليف العمليات على حقل واحد من فئة.

مساحات الأسماء

توفر لغة AC# namespaceنفس مستوى عزل الكود الذي توفره لغات Java packageأو C++ namespace، مع قواعد وميزات مشابهة جدًا package. ويمكن استيراد مساحات الأسماء باستخدام صيغة "using". [ 90 ]

الوصول إلى الذاكرة

في لغة C#، لا يمكن استخدام مؤشرات عناوين الذاكرة إلا داخل الكتل المُحددة تحديدًا بأنها غير آمنة [ 91 ] ، وتحتاج البرامج التي تحتوي على تعليمات برمجية غير آمنة إلى أذونات مناسبة للتشغيل. يتم الوصول إلى معظم الكائنات من خلال مراجع الكائنات الآمنة، والتي تشير دائمًا إما إلى كائن "نشط" أو إلى القيمة الفارغة المُحددة جيدًا ؛ من المستحيل الحصول على مرجع إلى كائن "ميت" (كائن تم جمعه بواسطة جامع البيانات المهملة)، أو إلى كتلة ذاكرة عشوائية. يمكن للمؤشر غير الآمن أن يشير إلى نسخة من نوع قيمة غير مُدار لا يحتوي على أي مراجع إلى كائنات تخضع لجمع البيانات المهملة، مثل نسخ الفئات أو المصفوفات أو السلاسل النصية. يمكن للتعليمات البرمجية غير المُحددة بأنها غير آمنة تخزين المؤشرات ومعالجتها من خلال هذا System.IntPtrالنوع، ولكن لا يمكنها الوصول إلى هذه المؤشرات.

لا يمكن تحرير الذاكرة المُدارة بشكل صريح؛ بل يتم جمعها تلقائيًا بواسطة جامع البيانات المهملة . تعالج عملية جمع البيانات المهملة مشكلة تسرب الذاكرة بإعفاء المبرمج من مسؤولية تحرير الذاكرة التي لم تعد مطلوبة في معظم الحالات. قد يستمر الكود الذي يحتفظ بمراجع للكائنات لفترة أطول من اللازم في استهلاك ذاكرة أعلى من الضروري، ولكن بمجرد تحرير آخر مرجع للكائن، تصبح الذاكرة متاحة لجمع البيانات المهملة.

الاستثناءات

تتوفر للمبرمجين مجموعة من الاستثناءات القياسية . تُطلق الدوال في المكتبات القياسية استثناءات النظام بشكل منتظم في بعض الحالات، وعادةً ما يتم توثيق نطاق الاستثناءات المطروحة. يمكن تعريف فئات استثناءات مخصصة للفئات، مما يسمح بتطبيق إجراءات معالجة خاصة حسب الحاجة. [ 92 ]

صيغة معالجة الاستثناءات هي كالتالي:

حاول { // شيء ما } أمسك ( استثناء ex ) { // إذا حدث خطأ، فافعل هذا } أخيرًا { // يتم التنفيذ دائمًا، بغض النظر عن حدوث خطأ }

يُطلق على هذا عادةً اسم كتلة التعليمات البرمجية "try-catch"، نظرًا لاستخدام دالتي "try" و"catch" وإمكانية الوصول إليهما في جميع إصدارات لغة C#. يمكن حذف جزء "finally". إذا لم تكن هناك حاجة إلى فحص تفاصيل الخطأ، (Exception ex)فيمكن حذف المعامل أيضًا. كما يمكن أن توجد عدة أجزاء "catch" لمعالجة أنواع مختلفة من الاستثناءات. [ 93 ]

لا توجد استثناءات مُدققة في لغة C# (على عكس لغة Java). وقد كان هذا قرارًا مدروسًا بناءً على مسائل قابلية التوسع وإدارة الإصدارات. [ 94 ]

تعدد الأشكال

على عكس لغة C++ ، لا تدعم لغة C# الوراثة المتعددة ، مع أن بإمكان أي فئة تطبيق أي عدد من " الواجهات " (الفئات المجردة بالكامل). كان هذا قرارًا تصميميًا من كبير مهندسي اللغة لتجنب التعقيدات وتبسيط المتطلبات المعمارية في جميع أنحاء واجهة سطر الأوامر .

عند تنفيذ واجهات متعددة تحتوي على طريقة بنفس الاسم وتأخذ معلمات من نفس الأنواع بنفس الترتيب، أي نفس التوقيع ، على غرار Java ، يسمح C# بطريقة واحدة لتغطية جميع الواجهات، وإذا لزم الأمر، طرق محددة لكل واجهة.

توفر لغة C# أيضًا خاصية تحميل الدوال (المعروفة أيضًا باسم تعدد الأشكال المخصص )، أي وجود دوال تحمل نفس الاسم ولكن بتوقيعات مختلفة. [ 95 ] وعلى عكس لغة Java، تدعم C# أيضًا خاصية تحميل المعاملات . [ 96 ]

منذ الإصدار 2.0، توفر لغة C# تعدد الأشكال البارامتري ، أي فئات ذات معلمات نوعية اختيارية أو مقيدة، على سبيل المثال ، مصفوفة متغيرة الحجم لا يمكن أن تحتوي إلا على عناصر من النوع X. هناك أنواع معينة من القيود التي يمكن للمبرمج تحديدها لمعلمات النوع: يجب أن يكون النوع X ( أو نوعًا مشتقًا منه )، يجب أن يُنفذ واجهة معينة، يجب أن يكون نوعًا مرجعيًا، يجب أن يكون نوعًا قيميًا، يجب أن يُنفذ مُنشئًا عامًا بدون معلمات . يمكن دمج معظم هذه القيود، ويمكن تحديد أي عدد من الواجهات. [ 97 ] [ 98 ]List<T>T

الاستعلام المتكامل للغة (LINQ)

تتمتع لغة C# بالقدرة على استخدام LINQ من خلال إطار عمل .NET. يستطيع المطور الاستعلام عن مصادر بيانات متنوعة، شريطة أن تكون الواجهة مُطبقة على الكائن. يشمل ذلك مستندات XML ، ومجموعة بيانات ADO.NET ، وقواعد بيانات SQL . [ 99 ]IEnumerable<T>

يُتيح استخدام LINQ في لغة C# مزايا عديدة، منها دعم IntelliSense ، وقدرات تصفية قوية، وأمان الأنواع مع إمكانية التحقق من أخطاء الترجمة، واتساق الاستعلام عن البيانات من مصادر متنوعة. [ 100 ] توجد عدة بنى لغوية مختلفة يمكن استخدامها مع C# وLINQ، وهي: تعابير الاستعلام، وتعابير لامدا، والأنواع المجهولة، والمتغيرات ذات الأنواع الضمنية، وأساليب الإضافة، ومُهيئات الكائنات. [ 101 ]

يحتوي LINQ على صيغتين: صيغة الاستعلام وصيغة الأسلوب. ومع ذلك، يقوم المترجم دائمًا بتحويل صيغة الاستعلام إلى صيغة الأسلوب في وقت الترجمة. [ 102 ]

باستخدام System.Linq ؛var numbers = new int [] { 5 , 10 , 8 , 3 , 6 , 12 };// صيغة الاستعلام (SELECT num FROM numbers WHERE num % 2 = 0 ORDER BY num) var numQuery1 = from num in numbers where num % 2 == 0 orderby num select num ;// بناء جملة الطريقة var numQuery2 = أرقام . حيث ( num => num % 2 == 0 ) . OrderBy ( n => n );

البرمجة الوظيفية

على الرغم من أن لغة C# هي لغة إجرائية في المقام الأول، إلا أنها تضيف دائمًا ميزات وظيفية بمرور الوقت، [ 103 ] [ 104 ] على سبيل المثال:

نظام النوع المشترك

تتميز لغة C# بنظام أنواع موحد . يُطلق على هذا النظام الموحد اسم نظام الأنواع المشترك (CTS). [ 111 ] : الجزء 2، الفصل 4: نظام الأنواع

يشير نظام الأنواع الموحد إلى أن جميع الأنواع، بما في ذلك الأنواع الأولية مثل الأعداد الصحيحة، هي فئات فرعية من الفئة. على سبيل المثال، يرث كل نوع طريقة.System.ObjectToString()

فئات أنواع البيانات

يقسم نظام CTS أنواع البيانات إلى فئتين: [ 111 ]

  1. أنواع المراجع
  2. أنواع القيم

لا تمتلك أنواع القيم دلالات هوية مرجعية ولا دلالات مقارنة مرجعية. تقارن مقارنات المساواة وعدم المساواة لأنواع القيم قيم البيانات الفعلية داخل هذه الأنواع، ما لم يتم تحميل المعاملات المقابلة بشكل زائد. تُشتق أنواع القيم من أنواع أخرى ، ولها دائمًا قيمة افتراضية، ويمكن إنشاؤها ونسخها دائمًا. من القيود الأخرى على أنواع القيم أنها لا يمكن أن تشتق من بعضها البعض (ولكن يمكنها تنفيذ الواجهات) ولا يمكن أن يكون لها مُنشئ افتراضي صريح (بدون معلمات) لأن لديها بالفعل مُنشئًا ضمنيًا يُهيئ جميع البيانات المُضمنة إلى القيمة الافتراضية المُعتمدة على النوع (0، أو null، أو ما شابه). من أمثلة أنواع القيم جميع الأنواع الأولية، مثل (عدد صحيح مُوقّع 32 بت)، و(عدد عشري IEEE 32 بت)، و (وحدة ترميز Unicode 16 بت)، و (أعداد ثابتة النقطة مفيدة للتعامل مع مبالغ العملات)، و (يُحدد نقطة زمنية مُحددة بدقة نانوثانية). من الأمثلة الأخرى (التعدادات) و (الهياكل المُعرّفة من قِبل المستخدم).System.ValueTypeintfloatchardecimalSystem.DateTimeenumstruct

على النقيض من ذلك، تتميز أنواع المراجع بمفهوم الهوية المرجعية، ما يعني أن كل نسخة من نوع مرجعي تختلف جوهريًا عن أي نسخة أخرى، حتى لو كانت البيانات داخل النسختين متطابقة. وينعكس هذا في مقارنات المساواة وعدم المساواة الافتراضية لأنواع المراجع، والتي تختبر المساواة المرجعية بدلًا من المساواة البنيوية، إلا إذا تم تحميل المعاملات المقابلة بشكل زائد (كما هو الحال في ). بعض العمليات غير ممكنة دائمًا، مثل إنشاء نسخة من نوع مرجعي، أو نسخ نسخة موجودة، أو إجراء مقارنة قيم بين نسختين موجودتين. ومع ذلك، يمكن لأنواع مراجع محددة توفير هذه الخدمات من خلال توفير مُنشئ عام أو تطبيق واجهة مقابلة (مثل أو ). من أمثلة أنواع المراجع: (الفئة الأساسية لجميع فئات C# الأخرى)، (سلسلة من أحرف Unicode)، و (فئة أساسية لجميع مصفوفات C#).System.StringICloneableIComparableobjectSystem.StringSystem.Array

كلا فئتي الأنواع قابلتان للتوسيع باستخدام أنواع محددة من قبل المستخدم.

التعبئة وفتح الصناديق

التغليف هو عملية تحويل كائن من نوع قيمة إلى قيمة من نوع مرجعي مطابق. [ 111 ] التغليف في لغة C# ضمني.

فك التغليف هو عملية تحويل قيمة من نوع مرجعي (تم تغليفها مسبقًا) إلى قيمة من نوع قيمة. [ 111 ] يتطلب فك التغليف في لغة C# تحويلًا صريحًا للنوع . لا يمكن فك تغليف كائن مُغلّف من النوع T إلا إلى T (أو T قابل للتصفير). [ 112 ]

مثال:

int foo = 42 ; // نوع القيمة. object bar = foo ; // تم تحويل foo إلى bar. int foo2 = ( int ) bar ; // تم فك تحويله إلى نوع القيمة.

المكتبات

تحدد مواصفات لغة C# الحد الأدنى من أنواع البيانات ومكتبات الفئات التي يتوقع المترجم توفرها. عمليًا، تُستخدم لغة C# غالبًا مع أحد تطبيقات البنية التحتية للغة المشتركة (CLI)، والتي تم توحيدها تحت مسمى ECMA- 335 .

بالإضافة إلى مواصفات واجهة سطر الأوامر القياسية، توجد العديد من مكتبات الفئات التجارية والمجتمعية التي تعتمد على مكتبات إطار عمل .NET لتوفير وظائف إضافية. [ 113 ]

يمكن للغة C# إجراء استدعاءات لأي مكتبة مدرجة في قائمة مكتبات وأطر عمل .NET .

أمثلة

مرحبا بالعالم

فيما يلي برنامج C# بسيط للغاية، وهو نسخة من مثال " Hello World " الكلاسيكي باستخدام ميزة العبارات ذات المستوى الأعلى التي تم تقديمها في C# 9: [ 114 ]

Console.WriteLine ( "Hello, World! " ) ;

بالنسبة للبرامج المكتوبة بلغة C# 8 أو أقل، يجب كتابة منطق نقطة الدخول للبرنامج في دالة رئيسية داخل نوع:

باستخدام النظام ؛class Program { static void Main () { Console . WriteLine ( "Hello, World!" ); } }

سيعرض هذا الكود النص التالي في نافذة وحدة التحكم:

مرحبا بالعالم!

لكل سطر غرض:

باستخدام النظام ؛

يستورد السطر أعلاه جميع الأنواع في Systemنطاق الاسم. على سبيل المثال، Consoleيتم تعريف الفئة المستخدمة لاحقًا في شفرة المصدر في Systemنطاق الاسم، مما يعني أنه يمكن استخدامها دون تحديد الاسم الكامل للنوع (الذي يتضمن نطاق الاسم).

// نسخة من برنامج "مرحباً بالعالم" الكلاسيكي

هذا السطر عبارة عن تعليق؛ فهو يصف ويوثق الكود للمبرمج (المبرمجين).

برنامج الفصل

ما سبق هو تعريف للفئة .Program كل ما يلي بين القوسين يصف تلك الفئة.

{ ... }

تُستخدم الأقواس المعقوفة لتحديد حدود كتلة التعليمات البرمجية. في هذه الحالة الأولى، تُشير إلى بداية ونهاية الفئة Program.

static void Main ()

يُعلن هذا عن دالة عضو الفئة التي يبدأ البرنامج من عندها التنفيذ. يستدعي وقت تشغيل .NET هذه Mainالدالة. على عكس Java ، Mainلا تحتاج الدالة publicإلى الكلمة المفتاحية `static`، التي تُخبر المُصرّف بإمكانية استدعاء الدالة من أي مكان بواسطة أي فئة. [ 115 ] كتابة `static` تُكافئ كتابة `static` . تجعل الكلمة المفتاحية `static` الدالة متاحة دون الحاجة إلى مثيل من `class` . يجب تعريف نقطة دخول كل تطبيق وحدة تحكم، وإلا سيتطلب البرنامج مثيلًا من `class` ، ولكن أي مثيل سيتطلب برنامجًا. لتجنب هذه التبعية الدائرية غير القابلة للحل ، تُبلغ مُصرّفات C# التي تُعالج تطبيقات وحدة التحكم (مثل المثال أعلاه) عن خطأ في حالة عدم وجود دالة `static`. تُعلن الكلمة المفتاحية `static` أن الدالة ليس لها قيمة إرجاع . (لاحظ، مع ذلك، أنه يُمكن كتابة برامج قصيرة باستخدام عبارات المستوى الأعلى المُقدمة في C# 9، كما ذُكر سابقًا.)staticvoidMain(string[]args)privatestaticvoidMain(string[]args)ProgramMainstaticProgramstaticMainvoidMain

Console.WriteLine ( "Hello, World! " ) ;

يكتب هذا السطر المخرجات. Consoleهي فئة ثابتة في Systemمساحة الاسم. توفر واجهةً لتدفقات الإدخال/الإخراج القياسية ، وتدفقات الأخطاء لتطبيقات وحدة التحكم. يستدعي البرنامج الدالة Consoleالتي WriteLineتعرض على وحدة التحكم سطرًا يحتوي على الوسيط، وهو السلسلة النصية "Hello, World!".

الأدوية الجنيسة

مع إصدار .NET 2.0 و C# 2.0، حصل مجتمع المطورين على مجموعات أكثر مرونة من تلك الموجودة في .NET 1.x. في غياب الأنواع العامة، كان على المطورين استخدام مجموعات مثل ArrayList لتخزين العناصر ككائنات من نوع غير محدد، مما تسبب في زيادة الحمل على الأداء عند تحويل العناصر إلى كائنات أو فك تغليفها أو التحقق من أنواعها.

أضافت البرمجة العامة ميزةً جديدةً هائلةً إلى بيئة .NET، مكّنت المطورين من إنشاء هياكل بيانات آمنة من حيث النوع. يُعدّ هذا التحوّل بالغ الأهمية، لا سيما عند تحويل الأنظمة القديمة، حيث يُمكن للتحديث إلى البرمجة العامة أن يُحسّن الأداء وسهولة الصيانة بشكلٍ ملحوظ، وذلك باستبدال هياكل البيانات القديمة ببدائل أكثر كفاءةً وأمانًا من حيث النوع. [ 116 ]

مثال

public class DataStore <T> { private T [ ] items = new T [ 10 ] ; private int count = 0 ;public void Add ( T item ) { items [ count ++ ] = item ; }public T Get ( int index ) { return items [ index ]; } }

التقييس والترخيص

في أغسطس 2001، شاركت مايكروسوفت وهيوليت -باكارد وإنتل في رعاية تقديم مواصفات لغة C# وبنية اللغة المشتركة (CLI) إلى منظمة المعايير ECMA الدولية . وفي ديسمبر 2001، أصدرت ECMA مواصفات لغة C# ECMA-334 . أصبحت C# معيارًا معتمدًا من قبل المنظمة الدولية للمعايير / اللجنة الكهروتقنية الدولية ( ISO / IEC) في عام 2003 (ISO/IEC 23270:2003 - تكنولوجيا المعلومات - لغات البرمجة - C# ). وكانت ECMA قد اعتمدت سابقًا مواصفات مكافئة كإصدار ثانٍ من C# في ديسمبر 2002. وفي يونيو 2005، وافقت ECMA على الإصدار الثالث من مواصفات C#، وقامت بتحديث ECMA-334. وشملت الإضافات الفئات الجزئية، والأساليب المجهولة، والأنواع القابلة للتصفير، والأنواع العامة (المشابهة إلى حد ما لقوالب C++ ). في يوليو 2005، قدمت ECMA إلى اللجنة الفنية المشتركة 1/اللجنة الفرعية 22 التابعة للمنظمة الدولية للمعايير/اللجنة الكهروتقنية الدولية، عبر عملية المسار السريع الخاصة بها، المعايير والتقارير الفنية ذات الصلة. تستغرق هذه العملية عادةً من 6 إلى 9 أشهر.

تم توحيد تعريف لغة C# وواجهة سطر الأوامر (CLI) بموجب معايير ISO/IEC و Ecma التي توفر حماية ترخيص معقولة وغير تمييزية من مطالبات براءات الاختراع.

وافقت مايكروسوفت مبدئيًا على عدم مقاضاة مطوري البرامج مفتوحة المصدر لانتهاكهم براءات الاختراع في المشاريع غير الربحية، وذلك فيما يتعلق بجزء من إطار العمل الذي يغطيه وعد المواصفات المفتوحة . [ 117 ] كما وافقت مايكروسوفت على عدم إنفاذ براءات الاختراع المتعلقة بمنتجات نوفيل ضد عملاء نوفيل المشتركين [ 118 باستثناء قائمة من المنتجات التي لا تذكر صراحةً لغة C# أو .NET أو تطبيق نوفيل لـ .NET ( مشروع Mono ). [ 119 ] ومع ذلك، أكدت نوفيل أن Mono لا ينتهك أيًا من براءات اختراع مايكروسوفت. [ 120 ] كما أبرمت مايكروسوفت اتفاقية محددة بعدم إنفاذ حقوق براءات الاختراع المتعلقة بملحق متصفح Moonlight ، الذي يعتمد على Mono، شريطة الحصول عليه من خلال نوفيل. [ 121 ]

بعد عقد من الزمن، بدأت مايكروسوفت بتطوير أدوات مجانية ومفتوحة المصدر ومتعددة المنصات للغة C#، وهي Visual Studio Code و . NET Core و Roslyn . وانضمت Mono إلى مايكروسوفت كمشروع تابع لشركة Xamarin ، وهي شركة تابعة لمايكروسوفت.

التطبيقات

طورت مايكروسوفت مُجمِّعات وأدوات مرجعية مفتوحة المصدر للغة C#. يُجمِّع المُجمِّع الأول، Roslyn ، إلى لغة وسيطة (IL)، بينما يُجمِّع المُجمِّع الثاني، RyuJIT، [ 122 ] مُجمِّعًا فوريًا (JIT)، وهو مُجمِّع ديناميكي يُجري تحسينات فورية ويُجمِّع اللغة الوسيطة إلى كود أصلي لواجهة وحدة المعالجة المركزية. [ 123 ] RyuJIT مفتوح المصدر ومكتوب بلغة C++. [ 124 ] أما Roslyn فهو مكتوب بالكامل بلغة مُدارة (C#)، وقد تم فتحه وإتاحة وظائفه كواجهات برمجة تطبيقات (APIs). وبذلك، يُتيح للمطورين إنشاء أدوات لإعادة هيكلة الكود وتشخيصه. [ 5 ] [ 125 ] يوجد فرعان للتنفيذ الرسمي: .NET Framework (مغلق المصدر، خاص بنظام Windows فقط) و.NET Core (مفتوح المصدر، متعدد المنصات)؛ وقد اندمجا في النهاية في تنفيذ واحد مفتوح المصدر: .NET 5.0. [ 126 ] في إطار عمل .NET 4.6، تم استبدال المُترجم السابق بمُترجم JIT جديد. [ 122 ] [ 127 ]

مترجمات لغة C# الأخرى (بعضها يتضمن تطبيقًا للبنية التحتية للغة المشتركة ومكتبات فئات .NET):

  • يوفر Mono ، وهو مشروع برعاية مايكروسوفت، مترجم C# مفتوح المصدر، وتنفيذًا كاملاً مفتوح المصدر لـ CLI (بما في ذلك مكتبات الإطار المطلوبة كما تظهر في مواصفات ECMA)، وتنفيذًا شبه كامل لمكتبات فئات NET حتى .NET Framework 3.5.
  • تتضمن سلسلة أدوات Elements من RemObjects برنامج RemObjects C#، الذي يقوم بتجميع كود C# إلى لغة .NET الوسيطة المشتركة ، ورمز بايت Java ، و Cocoa ، ورمز بايت Android ، و WebAssembly ، ورمز الآلة الأصلي لأنظمة Windows و macOS و Linux.
  • كما وفر مشروع DotGNU ( الذي توقف الآن) مترجم C# مفتوح المصدر، وتنفيذًا شبه كامل للبنية التحتية للغة المشتركة بما في ذلك مكتبات الإطار المطلوبة كما تظهر في مواصفات ECMA، ومجموعة فرعية من بعض مكتبات فئات .NET الخاصة المتبقية من Microsoft حتى .NET 2.0 (تلك غير الموثقة أو المضمنة في مواصفات ECMA، ولكنها مضمنة في توزيعة .NET Framework القياسية من Microsoft).

يستخدم محرك الألعاب Unity لغة C# كلغة برمجة أساسية. وقد أضاف محرك الألعاب Godot وحدة C# اختيارية بفضل تبرع من شركة مايكروسوفت بقيمة 24,000 دولار. [ 128 ]

انظر أيضاً

جافا

ملحوظات

  1. للبرمجة غير المتزامنة
  2. جرت العادة على استخدام علامة الرقم للحرف الثاني في النصوص العادية؛ أما في الأعمال الفنية،فيُستخدم أحيانًا رمز الرفع الحقيقي: C♯. مع ذلك، ينص معيار ECMA 334 على ما يلي: "يُكتب اسم C# بالحرف اللاتيني الكبير C (U+0043) متبوعًا بعلامة الرقم # (U+0023)."
  3. تتوفر إصدارات اللغة 1.0 و2.0 و5.0 تحت مسمى ISO/IEC 23270. ابتداءً من الإصدار 7.0، تتوفر المواصفات تحت مسمى ISO/IEC 20619 .
  4. لا تحتوي وثيقة مواصفات Microsoft C# 2.0 إلا على ميزات الإصدار 2.0 الجديدة. أما بالنسبة للميزات القديمة، فيُرجى استخدام مواصفات الإصدار 1.2 المذكورة أعلاه.

مراجع

الاقتباسات

  1. 1 2 3 4 5 6 مواصفات لغة C# (ملف PDF)  ( الطبعة الرابعة ). إيكما الدولية . يونيو 2006. مؤرشف (ملف PDF) من الأصل في 21 أبريل 2021. تم الاطلاع عليه في 26 يناير 2012 .
  2. "مجلة InfoQ الإلكترونية: معاينة للغة C# 7" . مؤرشفة من الأصل بتاريخ 24 أبريل 2023. تم الاطلاع عليها بتاريخ 11 نوفمبر 2016 .
  3. "ما الجديد في .NET 10" . تم الاطلاع عليه بتاريخ 13 نوفمبر 2025 .
  4. تورجرسن، مادز (27 أكتوبر 2008). "ميزات جديدة في لغة C# 4.0" . مايكروسوفت . مؤرشف من الأصل في 3 يناير 2012. تم الاطلاع عليه في 28 أكتوبر 2008 .
  5. ١ ٢ "يوفر مُصرّف Roslyn .NET لغتي C# وVisual Basic واجهات برمجة تطبيقات غنية لتحليل التعليمات البرمجية: dotnet/roslyn" . ١٣ نوفمبر ٢٠١٩. مؤرشف من الأصل في ٢٢ فبراير ٢٠٢١. تم استرجاعه في ١٣ فبراير ٢٠١٥ - عبر GitHub.
  6. "CoreCLR هي بيئة تشغيل .NET Core. تتضمن جامع البيانات المهملة، ومترجم JIT، وأنواع البيانات الأولية، والفئات منخفضة المستوى. dotnet/coreclr" . ١٣ نوفمبر ٢٠١٩. مؤرشف من الأصل في ١٤ أكتوبر ٢٠١٩. تم الاطلاع عليه في ٨ مارس ٢٠١٧ - عبر GitHub.
  7. 1 2 نوغلر، ديفيد (مايو 2007). "سي شارب 2.0 لمبرمجي سي++ وجافا: ورشة عمل المؤتمر". مجلة علوم الحاسوب في الكليات . 22 (5). على الرغم من تأثر لغة سي شارب بشكل كبير بلغة جافا، إلا أنها تأثرت أيضًا بشكل كبير بلغة سي++، ومن الأفضل اعتبارها امتدادًا لكلتا اللغتين.
  8. هاميلتون، نعومي (1 أكتوبر 2008). "دليل لغات البرمجة: سي شارب" . مجلة كمبيوتر وورلد . مؤرشف من الأصل في 24 مارس 2010. تم الاطلاع عليه في 12 فبراير 2010. نحن جميعًا نقف على أكتاف عمالقة، وكل لغة تُبنى على ما سبقها، لذا فنحن مدينون بالكثير للغات سي، وسي++، وجافا، ودلفي، وكل هذه اللغات الأخرى التي سبقتنا. ( أندرس هيلسبرغ )
  9. "مواصفات الكنيسة (شكر وتقدير)" (ملف PDF) . شركة كراي. 1 أكتوبر 2015. مؤرشف من الأصل (ملف PDF) في 5 فبراير 2016. تم الاطلاع عليه في 14 يناير 2016 .
  10. "أسئلة وأجوبة مع ريتش هيكي بقلم مايكل فوجوس" . مؤرشف من الأصل بتاريخ 11 يناير 2017. تم الاطلاع عليه بتاريخ 11 يناير 2017 .
  11. بورينزويغ، آري (14 يونيو 2016). "تم إصدار Crystal 0.18.0!" . مؤرشف من الأصل في 25 ديسمبر 2018. تم الاطلاع عليه في 7 أغسطس 2017. وهو مستوحى بشكل كبير من لغة روبي، ولغات أخرى (مثل سي شارب، وجو، وبايثون).
  12. "لغات الويب والآلات الافتراضية: البرمجة السريعة رائجة دائمًا. (V8، Dart) - مؤتمر جوجل I/O 2013" . يوتيوب . 16 مايو 2013. مؤرشف من الأصل في 21 ديسمبر 2021. تم الاطلاع عليه في 22 ديسمبر 2013 .
  13. أضافت Java 5.0 العديد من ميزات اللغة الجديدة ( حلقة for المحسّنة ، والتحويل التلقائي للأنواع ، والوسائط المتغيرة ، والتعليقات التوضيحية )، بعد أن تم تقديمها في لغة C# المشابهة (والمنافسة) .أُرشف بتاريخ 19 مارس 2011 في أرشيف الإنترنت (Wayback Machine) .أُرشف بتاريخ 7 يناير 2006 في أرشيف الإنترنت (Wayback Machine) .
  14. كورنيليوس، باري (1 ديسمبر 2005). "جافا 5 تلحق بسي شارب" . خدمات الحوسبة بجامعة أكسفورد . مؤرشف من الأصل في 6 مارس 2023. تم الاطلاع عليه في 18 يونيو 2014. في رأيي، سي شارب هي التي أحدثت هذه التغييرات الجذرية في لغة جافا. ( باري كورنيليوس )
  15. "التأثيرات - مرجع الصدأ" . مرجع الصدأ . مؤرشف من الأصل في 26 يناير 2019. تم الاطلاع عليه في 18 أبريل 2023 .
  16. لاتنر، كريس (3 يونيو 2014). "الصفحة الرئيسية لكريس لاتنر" . كريس لاتنر. مؤرشف من الأصل في 25 ديسمبر 2018. تم الاطلاع عليه في 12 مايو 2020. لغة Swift هي ثمرة جهد دؤوب من فريق من خبراء اللغة، ومختصي التوثيق، وخبراء تحسين أداء المترجمات، ومجموعة داخلية بالغة الأهمية لتجربة اللغة داخليًا، حيث قدموا ملاحظاتهم للمساعدة في صقل الأفكار واختبارها عمليًا. وبالطبع، استفادت اللغة بشكل كبير من الخبرات المكتسبة بصعوبة من العديد من اللغات الأخرى في هذا المجال، مستمدةً أفكارها من لغات مثل Objective-C وRust وHaskell وRuby وPython وC# وCLU، وغيرها الكثير.
  17. 1 2 3 4 5 6 7 Skeet 2019 .
  18. فاغنر، بيل. "ما الجديد في لغة C# 14" . learn.microsoft.com . تم الاطلاع عليه بتاريخ 13 سبتمبر 2025 .
  19. دولارد، كاثلين (14 نوفمبر 2023). "الإعلان عن C# 12" . مدونة .NET . مؤرشف من الأصل في 18 نوفمبر 2023. تم الاطلاع عليه في 18 نوفمبر 2023 .
  20. سيث، غاوراف (14 نوفمبر 2023). "الإعلان عن .NET 8" . مدونة .NET . مؤرشف من الأصل في 19 نوفمبر 2023. تم الاطلاع عليه في 18 نوفمبر 2023 .
  21. 1 2 3 4 5 6 البهاري 2022 .
  22. "أهداف تصميم لغة C#" . www.java-samples.com . مؤرشف من الأصل في 6 أكتوبر 2021. تم الاطلاع عليه في 6 أكتوبر 2021 .
  23. زاندر، جيسون (21 نوفمبر 2007). "بعض الحقائق التاريخية" . مؤرشف من الأصل في 29 يوليو 2020. تم الاطلاع عليه في 9 سبتمبر 2025 .
  24. غوثري، سكوت (28 نوفمبر 2006). "ما هي لغة البرمجة التي كُتبت بها ASP.Net في الأصل؟" . مؤرشف من الأصل في 24 يونيو 2016. تم الاطلاع عليه في 21 فبراير 2008 .
  25. هاميلتون (1 أكتوبر 2008). "دليل لغات البرمجة: سي شارب" . كمبيوتر وورلد . مؤرشف من الأصل في 18 مايو 2019. تم الاطلاع عليه في 9 سبتمبر 2025 .
  26. "التفاصيل" . nilsnaegele.com . مؤرشف من الأصل في 7 أبريل 2019. تم الاطلاع عليه في 7 أبريل 2019 .
  27. "لماذا لا تُعتبر لغة C# من مايكروسوفت كذلك؟" . سي نت: سي بي إس إنتراكتيف. 2002. مؤرشف من الأصل في 14 أغسطس 2023. تم الاطلاع عليه في 18 سبتمبر 2023 .
  28. جوي، بيل (7 فبراير 2002). "نقطة ضعف مايكروسوفت" . cnet.com. مؤرشف من الأصل في 14 أغسطس 2023. تم الاطلاع عليه في 18 سبتمبر 2023 .
  29. أوزبورن، جون (1 أغسطس 2000). "نظرة معمقة على لغة سي شارب: مقابلة مع كبير مهندسي مايكروسوفت، أندرس هيلسبرغ" . دار نشر أورايلي ميديا. مؤرشف من الأصل في 9 يناير 2010. تم الاطلاع عليه في 14 نوفمبر 2009 .
  30. "الأنواع العامة (دليل برمجة C#)" . مايكروسوفت. مؤرشف من الأصل في 26 أغسطس 2011. تم الاطلاع عليه في 21 مارس 2011 .
  31. دون بوكس ​​وأندرس هيلسبرغ (فبراير 2007). "LINQ: استعلام متكامل مع لغة .NET" . مايكروسوفت. مؤرشف من الأصل في 24 أغسطس 2011. تم الاطلاع عليه في 21 مارس 2011 .
  32. ميرسر، إيان (15 أبريل 2010). "لماذا غالبًا ما تكون البرمجة الوظيفية وLINQ أفضل من البرمجة الإجرائية" . abodit.com. مؤرشف من الأصل في 11 يوليو 2011. تم الاطلاع عليه في 21 مارس 2011 .
  33. فيرنانديز، دان (29 يناير 2004). "آندي يتقاعد" . مدونة دان فيرنانديز . Blogs.msdn.com. مؤرشف من الأصل في 19 يناير 2012. تم الاطلاع عليه في 4 أكتوبر 2012 .
  34. "اللجان الفنية - اللجنة الفنية المشتركة 1/اللجنة الفرعية 22 - لغات البرمجة وبيئاتها وواجهات برامج النظام" . المنظمة الدولية للمقاييس. مؤرشف من الأصل في 27 سبتمبر 2012. تم الاطلاع عليه في 4 أكتوبر 2012 .
  35. "ISO/IEC 23270:2003 - تكنولوجيا المعلومات - مواصفات لغة C#" . Iso.org. 23 أغسطس 2006. مؤرشف من الأصل في 8 مايو 2012. تم الاطلاع عليه في 4 أكتوبر 2012 .
  36. "ISO/IEC 23270:2006 - تكنولوجيا المعلومات - لغات البرمجة - C#" . Iso.org. 26 يناير 2012. مؤرشف من الأصل في 6 ديسمبر 2010. تم الاطلاع عليه في 4 أكتوبر 2012 .
  37. "SO/IEC 23270:2018 تكنولوجيا المعلومات - لغات البرمجة - C#" . المنظمة الدولية للمقاييس . تم الاطلاع عليه بتاريخ 26 نوفمبر 2020 .
  38. مارياني، ريكو (5 أكتوبر 2009). "تاريخي مع فيجوال ستوديو (الجزء الأول) - مقتطفات من أداء ريكو مارياني" . مقتطفات من أداء ريكو مارياني . مؤرشف من الأصل في 27 مايو 2018. تم الاطلاع عليه في 26 مايو 2018 .
  39. كوفاكس، جيمس (7 سبتمبر 2007). "درس تاريخي في لغة C#/.NET" . مؤرشف من الأصل في 6 مارس 2009. تم الاطلاع عليه في 18 يونيو 2009 .
  40. هيلسبرغ، أندرس (1 أكتوبر 2008). "دليل لغات البرمجة: سي شارب" . كمبيوتر وورلد . مؤرشف من الأصل في 2 أبريل 2015. تم الاطلاع عليه في 22 يونيو 2014 .
  41. "أسئلة وأجوبة حول لغة C# من مايكروسوفت" . مايكروسوفت . مؤرشف من الأصل في 14 فبراير 2006. تم الاطلاع عليه في 25 مارس 2008 .
  42. "أسئلة وأجوبة حول لغة F#" . أبحاث مايكروسوفت. مؤرشف من الأصل في 18 فبراير 2009. تم الاطلاع عليه في 18 يونيو 2009 .
  43. سيمون، رافائيل؛ ستاف، إيمانويل؛ ماير، برتراند (يونيو 2002). "Full Eiffel on the .NET Framework" . مايكروسوفت . مؤرشف من الأصل في 21 يوليو 2009. تم الاطلاع عليه في 18 يونيو 2009 .
  44. "ما الجديد في لغة ومترجم C# 2.0" . مايكروسوفت. مؤرشف من الأصل في 18 ديسمبر 2010. تم الاطلاع عليه في 11 يونيو 2014 .
  45. هيلسبرغ، أندرس؛ تورجرسن، مادز (30 أبريل 2007). "نظرة عامة على لغة C# 3.0" . شبكة مطوري مايكروسوفت . مايكروسوفت. مؤرشف من الأصل في 25 يونيو 2014. تم الاطلاع عليه في 11 يونيو 2014 .
  46. 1 2 "استخدام لغة C# 3.0 من .NET 2.0" . Danielmoth.com. 13 مايو 2007. مؤرشف من الأصل في 29 سبتمبر 2012. تم الاطلاع عليه في 4 أكتوبر 2012 .
  47. هيلسبرغ، أندرس (15 سبتمبر 2011). "التوجهات المستقبلية للغة سي شارب وفيجوال بيسك" . القناة التاسعة . مؤتمر BUILD2011. مايكروسوفت. مؤرشف من الأصل في 23 سبتمبر 2011. تم الاطلاع عليه في 21 سبتمبر 2011 .
  48. "مقدمة للميزات الجديدة في لغة C# 5.0" . مدونة برنامج جوائز مايكروسوفت MVP . مايكروسوفت. 26 مارس 2012. مؤرشف من الأصل في 4 يونيو 2014. تم الاطلاع عليه في 11 يونيو 2014 .
  49. "ميزات اللغات في C# 6 و VB 14" . GitHub . dotnet/roslyn. مؤرشف من الأصل في 12 يناير 2016. تم الاطلاع عليه في 13 فبراير 2015 .
  50. "ما الجديد في C# 7" . وثائق مايكروسوفت . 21 ديسمبر 2016. مؤرشف من الأصل في 1 نوفمبر 2017.
  51. تورجرسن، مادز (9 مارس 2017). "الميزات الجديدة في C# 7.0" . مدونة .NET . مايكروسوفت. مؤرشف من الأصل في 11 أبريل 2017. تم الاطلاع عليه في 9 يونيو 2017 .
  52. "ملاحظات إصدار Visual Studio 2017 الإصدار 15.0" . مايكروسوفت ليرن . 11 أبريل 2023. مؤرشف من الأصل في 20 أبريل 2023. تم الاطلاع عليه في 19 أبريل 2023 .
  53. "ما الجديد في C# 7.1" . وثائق مايكروسوفت . مؤرشف من الأصل في 10 أكتوبر 2017. تم الاطلاع عليه في 9 أكتوبر 2017 .
  54. "ملاحظات إصدار Visual Studio 2017 الإصدار 15.3" . مايكروسوفت ليرن . 11 أبريل 2023. مؤرشف من الأصل في 21 مارس 2023. تم الاطلاع عليه في 19 أبريل 2023 .
  55. "ما الجديد في C# 7.2" . وثائق مايكروسوفت . مؤرشف من الأصل في 1 ديسمبر 2017. تم الاطلاع عليه في 26 نوفمبر 2017 .
  56. "ملاحظات إصدار Visual Studio 2017 الإصدار 15.5" . مايكروسوفت ليرن . 11 أبريل 2023. مؤرشف من الأصل في 20 أبريل 2023. تم الاطلاع عليه في 19 أبريل 2023 .
  57. "ما الجديد في C# 7.3" . وثائق مايكروسوفت . مؤرشف من الأصل في 23 يونيو 2018. تم الاطلاع عليه في 23 يونيو 2018 .
  58. "ملاحظات إصدار Visual Studio 2017 الإصدار 15.7" . مايكروسوفت ليرن . 13 يوليو 2022. مؤرشف من الأصل في 20 أبريل 2023. تم الاطلاع عليه في 19 أبريل 2023 .
  59. "ما الجديد في C# 8.0" . وثائق مايكروسوفت . 9 مارس 2023. مؤرشف من الأصل في 6 سبتمبر 2020. تم الاطلاع عليه في 14 أبريل 2019 .
  60. "ملاحظات إصدار Visual Studio 2019 الإصدار 16.3" . مايكروسوفت ليرن . 11 أبريل 2023. مؤرشف من الأصل في 20 أبريل 2023. تم الاطلاع عليه في 19 أبريل 2023 .
  61. بيل واغنر. "ما الجديد في لغة C# 9.0 - دليل C#" . مايكروسوفت ليرن . مؤرشف من الأصل في 5 سبتمبر 2020. تم الاطلاع عليه في 15 أكتوبر 2020 .
  62. "ملاحظات إصدار Visual Studio 2019 الإصدار 16.8" . مايكروسوفت ليرن . 11 أبريل 2023. مؤرشف من الأصل في 20 أبريل 2023. تم الاطلاع عليه في 19 أبريل 2023 .
  63. "ما الجديد في C# 10" . مايكروسوفت ليرن . مؤرشف من الأصل في 8 فبراير 2022. تم الاطلاع عليه في 10 نوفمبر 2021 .
  64. "ملاحظات إصدار Visual Studio 2022 الإصدار 17.0" . مايكروسوفت ليرن . مؤرشف من الأصل في 16 يوليو 2023. تم الاطلاع عليه في 19 أبريل 2023 .
  65. "ما الجديد في لغة C# 11" . مايكروسوفت ليرن . مؤرشف من الأصل بتاريخ 15 أغسطس 2022. تم الاطلاع عليه بتاريخ 8 أغسطس 2022 .
  66. "ملاحظات إصدار Visual Studio 2022 الإصدار 17.4" . مايكروسوفت ليرن . مؤرشف من الأصل في 6 أغسطس 2023. تم الاطلاع عليه في 19 أبريل 2023 .
  67. "ما الجديد في C# 12" . مايكروسوفت ليرن . مؤرشف من الأصل في 20 يوليو 2023. تم الاطلاع عليه في 29 يونيو 2023 .
  68. "ملاحظات إصدار Visual Studio 2022 الإصدار 17.8" . مايكروسوفت ليرن . 13 أغسطس 2024. مؤرشف من الأصل في 6 أكتوبر 2024. تم الاطلاع عليه في 18 نوفمبر 2024 .
  69. "ما الجديد في C# 13" . مايكروسوفت ليرن . مؤرشف من الأصل في 13 نوفمبر 2024. تم الاطلاع عليه في 18 نوفمبر 2024 .
  70. "ملاحظات إصدار Visual Studio 2022" . مايكروسوفت ليرن . 12 نوفمبر 2024. مؤرشف من الأصل في 12 نوفمبر 2024. تم الاطلاع عليه في 18 نوفمبر 2024 .
  71. "ما الجديد في لغة C# 14" . مايكروسوفت ليرن . تم الاطلاع عليه بتاريخ 18 نوفمبر 2025 .
  72. "ملاحظات إصدار Visual Studio 2026" . مايكروسوفت ليرن . 12 نوفمبر 2025. تم الاطلاع عليه في 18 نوفمبر 2025 .
  73. نوفاك وآخرون 2010 .
  74. stevewhims؛ mattwojo (20 أكتوبر 2022). "تجميع التطبيقات باستخدام .NET Native - تطبيقات UWP" . learn.microsoft.com . مؤرشف من الأصل في 27 أكتوبر 2023. تم الاطلاع عليه في 27 أكتوبر 2023 .
  75. لاكشان إف؛ أغوك؛ ريك-أندرسون؛ وآخرون . (12 سبتمبر 2023). "نظرة عامة على نشر AOT الأصلي - .NET" . learn.microsoft.com . مؤرشف من الأصل في 11 نوفمبر 2023. تم الاسترجاع في 27 أكتوبر 2023 . {{cite web}}: صيانة CS1: الأسماء الرقمية: قائمة المؤلفين ( رابط )
  76. "الأنواع/عام، جزء من وثائق لغة C# الرسمية" . مايكروسوفت . مؤرشف من الأصل في 29 مارس 2024. تم الاطلاع عليه في 6 أبريل 2024 .
  77. بيل واغنر. "أشجار التعبير (سي شارب)" . مايكروسوفت ليرن . مؤرشف من الأصل في 15 مايو 2021. تم الاسترجاع في 14 مايو 2021 .
  78. "فئة السمة" .
  79. dotnet-bot. "System.Reflection.Emit Namespace" . learn.microsoft.com . مؤرشف من الأصل في 28 أبريل 2023. تم الاطلاع عليه في 28 أبريل 2023 .
  80. ماكاليستر، نيل (20 أكتوبر 2011). "روسلين من مايكروسوفت: إعادة ابتكار المترجم كما نعرفه" . إنفوورلد . مؤرشف من الأصل في 5 مارس 2022. تم الاسترجاع في 5 مارس 2022 .
  81. "مقدمة إلى مولدات مصادر C#" . مدونة .NET . 29 أبريل 2020. مؤرشف من الأصل في 7 مايو 2021. تم الاطلاع عليه في 14 مايو 2021 .
  82. "الفئات/الحقول، جزء من وثائق C# الرسمية" . 7 فبراير 2024.
  83. "out (C# Reference)" . 30 مارس 2024.
  84. "معلمات الطريقة/معدِّل المعلمات، جزء من وثائق لغة C# الرسمية" . 21 مايو 2024.
  85. 1 2 "الفئات/الخصائص، جزء من وثائق C# الرسمية" . 7 فبراير 2024.
  86. "مرجع افتراضي (لغة سي شارب)" . مايكروسوفت ليرن . 15 سبتمبر 2021. مؤرشف من الأصل في 30 أغسطس 2018. تم الاطلاع عليه في 4 أبريل 2018 .
  87. " مُعدِّل جديد ، جزء من وثائق لغة C# الرسمية" . 12 أبريل 2023.
  88. "الفئات المجردة والمغلقة وأعضاء الفئة - لغة سي شارب" . 27 أكتوبر 2021.
  89. "الخصائص المُنفذة تلقائيًا (دليل برمجة C#)" . مؤرشف من الأصل في 29 أكتوبر 2020. تم الاطلاع عليه في 12 سبتمبر 2020 .
  90. "توجيه استخدام - مرجع لغة C#" . وثائق مايكروسوفت . مؤرشف من الأصل في 14 أبريل 2019. تم الاطلاع عليه في 14 أبريل 2019 .
  91. بيل واغنر. "التعليمات البرمجية غير الآمنة، ومؤشرات البيانات، ومؤشرات الدوال" . مايكروسوفت ليرن . مؤرشف من الأصل في 4 يوليو 2021. تم الاطلاع عليه في 20 يونيو 2021 .
  92. "كيفية إنشاء استثناءات معرفة من قبل المستخدم" . مؤرشف من الأصل في 26 يناير 2021. تم الاطلاع عليه في 12 سبتمبر 2020 .
  93. "عبارات معالجة الاستثناءات، جزء من وثائق لغة C# الرسمية" . مايكروسوفت ليرن . 22 أبريل 2023. تم الاطلاع عليه في 26 يونيو 2024 .
  94. فينرز، بيل؛ إيكل، بروس (18 أغسطس 2003). "مشكلة الاستثناءات المُدققة" . مؤرشف من الأصل في 18 فبراير 2015. تم الاطلاع عليه في 30 مارس 2010 .
  95. "التعبيرات/حل التحميل الزائد، جزء من وثائق لغة C# الرسمية" . مايكروسوفت ليرن . 7 فبراير 2024. تم الاطلاع عليه في 7 أبريل 2024 .
  96. بيل واغنر. "تحميل المعاملات الزائد - مرجع لغة سي شارب" . مايكروسوفت ليرن . مؤرشف من الأصل في 24 يونيو 2021. تم الاسترجاع في 20 يونيو 2021 .
  97. "الأنواع/الأنواع المُنشأة، جزء من وثائق لغة C# الرسمية" . مايكروسوفت ليرن . تم الاطلاع عليه في 7 أبريل 2024 .
  98. "قيود معلمات الفئات/الأنواع، جزء من وثائق لغة C# الرسمية" . مايكروسوفت ليرن . 7 فبراير 2024. تم الاطلاع عليه في 7 أبريل 2024 .
  99. تشانغ، شيو دونغ؛ تينغ، زي مو؛ تشاو، دونغ وانغ (سبتمبر 2014). "بحث في تقنية الوصول إلى قواعد البيانات ضمن إطار عمل .NET" . الميكانيكا التطبيقية والمواد . 644-650 : 3077-3080 . doi : 10.4028/www.scientific.net/AMM.644-650.3077 . S2CID 62201466. ProQuest 1565579768 .  
  100. أوتي، مايكل (فبراير 2006). "لينك نحو المستقبل". مجلة خادم SQL . المجلد 8، العدد 2. الصفحات 17-21 . بروكويست 214859896 .    
  101. شيلدون، ويليام (نوفمبر 2010). "ميزات جديدة في LINQ". مجلة SQL Server . المجلد 12، العدد 11. الصفحات 37-40 . ProQuest 770609095 .    
  102. بيل واغنر (15 سبتمبر 2021). "صيغة الاستعلام وصيغة الأسلوب في LINQ (C#)" . learn.microsoft.com . مؤرشف من الأصل في 23 مايو 2023. تم الاطلاع عليه في 23 مايو 2023 .
  103. إريك ديتريش (9 مارس 2023). "تاريخ لغة سي شارب - دليل سي شارب" . learn.microsoft.com . مؤرشف من الأصل في 28 أبريل 2023. تم الاطلاع عليه في 28 أبريل 2023 .
  104. الرحلة الوظيفية للغة C# - مادز تورجرسن - مؤتمر NDC كوبنهاغن 2022 ، 17 أغسطس 2022، مؤرشف من الأصل في 15 مايو 2023 ، تم استرجاعه في 15 مايو 2023
  105. "جمال الإغلاقات" . csharpindepth.com . مؤرشف من الأصل في 19 مايو 2023. تم الاطلاع عليه في 28 أبريل 2023 .
  106. 1 2 بيل واغنر. "الدوال المجهولة - دليل برمجة C#" . مايكروسوفت ليرن . مؤرشف من الأصل في 15 أبريل 2021. تم الاسترجاع في 15 مايو 2021 .
  107. 1 2 3 "ما الجديد في C# 7.0" . وثائق مايكروسوفت . مؤرشف من الأصل في 6 أغسطس 2020. تم الاطلاع عليه في 14 أبريل 2019 .
  108. "C# 9.0 قيد التسجيل" . مدونة .NET . ١٠ نوفمبر ٢٠٢٠. مؤرشف من الأصل في ١٥ مايو ٢٠٢١. تم الاطلاع عليه في ١٥ مايو ٢٠٢١ .
  109. بيل واغنر (30 يونيو 2022). "كلمة init الرئيسية - مرجع لغة C#" . learn.microsoft.com . مؤرشف من الأصل في 19 مايو 2023. تم الاطلاع عليه في 19 مايو 2023 .
  110. منصة مُجمِّع .NET ، منصة .NET، 28 أبريل 2023، مؤرشفة من الأصل في 28 أبريل 2023 ، تم استرجاعها في 28 أبريل 2023
  111. 1 2 3 4 آرتشر 2001 .
  112. ليبرت، إريك (19 مارس 2009). "التمثيل والهوية" . مغامرات رائعة في البرمجة . Blogs.msdn.com. مؤرشف من الأصل في 12 يوليو 2011. تم الاطلاع عليه في 4 أكتوبر 2012 .
  113. "مكتبات الأطر البرمجية" . مايكروسوفت ليرن . ١٩ أبريل ٢٠٢٣. مؤرشف من الأصل في ١٤ يوليو ٢٠١٩. تم الاطلاع عليه في ١٤ يوليو ٢٠١٩ .
  114. بيل واغنر. "ما الجديد في لغة C# 9.0 - دليل C#" . مايكروسوفت ليرن . مؤرشف من الأصل في 5 سبتمبر 2020. تم الاطلاع عليه في 14 مايو 2021 .
  115. بيل واغنر. "الدالة الرئيسية () ووسائط سطر الأوامر" . مايكروسوفت ليرن . مؤرشف من الأصل في 5 أغسطس 2021. تم الاطلاع عليه في 5 أغسطس 2021 .
  116. "إطلاق العنان لقوة البرمجة العامة في لغة C#: دليل شامل" . 24 أبريل 2024.
  117. "تعهد براءات الاختراع لمطوري البرمجيات مفتوحة المصدر" . 16 مارس 2023. مؤرشف من الأصل في 7 ديسمبر 2017. تم الاطلاع عليه في 28 أكتوبر 2017 .
  118. "اتفاقية التعاون في مجال براءات الاختراع - تعاون مايكروسوفت ونوفيل في مجال قابلية التشغيل البيني" . مايكروسوفت . 2 نوفمبر 2006. مؤرشفة من الأصل في 17 مايو 2009. تم الاسترجاع في 5 يوليو 2009. تتعهد مايكروسوفت، نيابة عن نفسها وشركاتها التابعة (يشار إليها مجتمعة باسم "مايكروسوفت")، بموجب هذه الاتفاقية بعدم مقاضاة عملاء نوفيل وعملاء شركات نوفيل التابعة لها بتهمة انتهاك براءات الاختراع المشمولة لمايكروسوفت بسبب استخدام هؤلاء العملاء لنسخ محددة من منتج مشمول تم توزيعه بواسطة نوفيل أو شركاتها التابعة (يشار إليها مجتمعة باسم "نوفيل") والتي تلقت نوفيل إيرادات منها (مباشرة أو غير مباشرة) مقابل هذه النسخ المحددة؛ شريطة أن يقتصر العهد المذكور أعلاه على استخدام العميل (أ) لهذه النسخ المحددة التي تصرح بها نوفيل مقابل هذا الإيراد، و (ب) في النطاق الذي تصرح به نوفيل مقابل هذا الإيراد.
  119. "التعريفات" . مايكروسوفت . 2 نوفمبر 2006. مؤرشف من الأصل في 4 نوفمبر 2012. تم الاسترجاع في 5 يوليو 2009 .
  120. ستاينمان، جاستن (7 نوفمبر 2006). "نوفيل يجيب على أسئلة من المجتمع" . مؤرشف من الأصل في 16 يوليو 2013. تم الاطلاع عليه في 5 يوليو 2009. نؤكد أن مونو لا ينتهك أي براءات اختراع لشركة مايكروسوفت .
  121. "عهدٌ للمستفيدين النهائيين من Moonlight - تعاون مايكروسوفت ونوفيل في مجال قابلية التشغيل البيني" . مايكروسوفت . 28 سبتمبر 2007. مؤرشف من الأصل في 23 سبتمبر 2010. تم الاطلاع عليه في 8 مارس 2008 ."المستلم النهائي" يعني كيانًا أو فردًا يستخدم، للغرض المقصود، تطبيق Moonlight الذي تم الحصول عليه مباشرةً من Novell أو من خلال مستلم وسيط... تحتفظ Microsoft بالحق في تحديث (بما في ذلك إيقاف) الاتفاقية المذكورة أعلاه... "تطبيق Moonlight" يعني فقط تلك الأجزاء المحددة من Moonlight 1.0 أو Moonlight 1.1 التي تعمل فقط كملحق لمتصفح على جهاز كمبيوتر شخصي وليست مرخصة بموجب GPLv3 أو ترخيص مماثل.
  122. 1 2 "اكتمل الانتقال إلى RyuJIT!" . microsoft.com . 19 يونيو 2018. مؤرشف من الأصل في 19 يوليو 2019. تم الاطلاع عليه في 20 يوليو 2021 .
  123. "عملية التنفيذ المُدارة" . microsoft.com . مؤرشف من الأصل في 23 ديسمبر 2017. تم الاطلاع عليه في 20 يوليو 2021 .
  124. "coreclr/src/jit/" . github.com . مؤرشف من الأصل في 9 يناير 2019. تم الاطلاع عليه في 20 يوليو 2021 .
  125. "دليل لغة C#" . مايكروسوفت ليرن . مؤرشف من الأصل في 13 أغسطس 2022. تم الاطلاع عليه في 28 يوليو 2017 .
  126. "5.0.8" . microsoft.com . مؤرشف من الأصل في 23 أبريل 2020. تم الاطلاع عليه في 20 يوليو 2021 .
  127. "التخفيف: مُجمِّع JIT جديد 64 بت" . microsoft.com . مؤرشف من الأصل في 5 أبريل 2018. تم الاطلاع عليه في 20 يوليو 2021 .
  128. إتشيفيري، إغناسيو (21 أكتوبر 2017). "تقديم لغة C# في محرك Godot" . محرك Godot . مؤرشف من الأصل في 26 أكتوبر 2018. تم الاطلاع عليه في 26 أكتوبر 2018 .

مصادر

  • ألباهاري، جوزيف (2022). دو دييز 10 باختصار (  الطبعة الأولى). أورايلي. ISBN 978-1-098-12195-2.
  • آرتشر، توم (2001). "الجزء 2، الفصل 4: نظام الأنواع". داخل لغة سي شارب . ريدموند، واشنطن: مطبعة مايكروسوفت. ISBN 0-7356-1288-9.
  • نوفاك، إستفان؛ فيلفارت، أندراس. جرانيكز، آدم. بالاسي، جيورجي؛ هادريك، أتيلا؛ سيلرز، ميتشل؛ هيلار، جاستون سي؛ مولنار، أغنيس؛ كانجيلال، جويديب (2010). Visual Studio 2010 و.NET 4 ستة في واحد . الصحافة روكس. رقم ISBN 978-0470499481.
  • سكيت، جون (2019). لغة سي شارب بتفصيل (  الطبعة الرابعة). مانينغ. رقم ISBN 978-1617294532.

للمزيد من القراءة