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

سي شارب
نموذجمتعدد النماذج : منظم ، إلزامي ، موجه نحو الكائنات ، مدفوع بالأحداث ، مدفوع بالمهمة ، وظيفي ، عام ، تأملي ، متزامن
عائلةج
صمم بواسطةأندرس هيلسبيرج ( مايكروسوفت )
المطورمادس تورجرسن ( مايكروسوفت )
ظهرت لأول مرة2000 ؛ منذ 24 سنة [1] ( 2000 )
إصدار مستقر
12.0 [2]  / 14 نوفمبر 2023 ؛ منذ 11 شهرًا ( 14 نوفمبر 2023 )
الانضباط في الطباعةثابت ، ديناميكي ، [3] قوي ، آمن ، اسمي ، مستنتج جزئيًا
إدارة الذاكرةإدارة الذاكرة التلقائية
منصةالبنية التحتية للغة المشتركة
رخصة
ملحقات اسم الملف.cs,.csx
موقع إلكترونيlearn.microsoft.com/en-us/dotnet/csharp/
التنفيذات الرئيسية
Visual C# و . NET و Mono ومنصة Windows العالمية المتوقفة : .NET Framework و DotGNU
اللهجات
، لغة C# متعددة الأصوات ، لغة C# محسنة
متأثر بـ
C++ ، [6] ، Eiffel ، F# ، [a] Haskell ، Scala ، Icon ، J# ، J++ ، Java ، [6] ML ، Modula-3 ، Object Pascal ، [7] VB
متأثر
Chapel ، [8] Clojure ، [9] Crystal ، [10] D ، J# ، Dart ، [11] F# ، Hack ، Java ، [12] [13] Kotlin ، Nemerle ، Oxygene ، Rust ، [14] Swift ، [15] Vala ، TypeScript
  • برمجة سي شارب في ويكي الكتب

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

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

اعتبارًا من نوفمبر 2023، أحدث إصدار مستقر للغة هو C# 12.0، والذي تم إصداره في عام 2023 في .NET 8.0. [18] [19]

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

تسرد معايير Ecma أهداف التصميم التالية لـ C#: [17]

تاريخ

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

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

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

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

كان لدى C# تميمة تسمى Andy (تم تسميتها على اسم Anders Hejlsberg ). تم إيقافها في 29 يناير 2004. [32]

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

اسم

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

نوتة موسيقية حادة

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

بسبب القيود الفنية للعرض (الخطوط القياسية والمتصفحات وما إلى ذلك)، ومعظم تخطيطات لوحة المفاتيح تفتقر إلى رمز حاد ( U+266F MUSIC SHARP SIGN ( ))، تم اختيار علامة الرقم ( U+0023 # NUMBER SIGN ( # )) لتقريب الرمز الحاد في الاسم المكتوب للغة البرمجة. [40] تنعكس هذه الاتفاقية في مواصفات لغة C# ECMA-334. [17]

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

الإصدارات


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

بناء الجملة

إن بناء الجملة الأساسي للغة C# مشابه لبناء الجملة في لغات أخرى من نمط C مثل C وC++ وJava، على وجه الخصوص:

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

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

قابلية النقل

من حيث التصميم، فإن لغة C# هي لغة البرمجة التي تعكس بشكل مباشر البنية الأساسية للغة المشتركة  (CLI). [68] تتوافق معظم أنواعها الجوهرية مع أنواع القيمة التي ينفذها إطار عمل CLI. ومع ذلك، لا تنص مواصفات اللغة على متطلبات إنشاء التعليمات البرمجية للمترجم: أي أنها لا تنص على أن مترجم C# يجب أن يستهدف وقت تشغيل لغة مشتركة، أو إنشاء لغة وسيطة مشتركة (CIL)، أو إنشاء أي تنسيق محدد آخر. يمكن لبعض مترجمي C# أيضًا إنشاء تعليمات برمجية آلية مثل المترجمين التقليديين لـ C++ أو Fortran . [69] [70]

الكتابة

يدعم C# إعلانات المتغيرات المكتوبة ضمناً بقوة باستخدام الكلمة الأساسية var، [16] : 470  والمصفوفات المكتوبة ضمناً باستخدام الكلمة الأساسية new[]متبوعة بمبدئ المجموعة. [16] : 80  [20] : 58 

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

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

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

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

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

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

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

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

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

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

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

الطريقة في لغة سي شارب هي عضو في فئة يمكن استدعاؤها كدالة (تسلسل من التعليمات)، بدلاً من مجرد قدرة الحقل (أي متغير الفئة أو المثيل) على الاحتفاظ بالقيمة . [ 76 ] كما هو الحال في اللغات الأخرى المتشابهة نحويًا، مثل سي++ و ANSI C ، فإن توقيع الطريقة هو إعلان يتضمن بالترتيب: أي كلمات رئيسية اختيارية لإمكانية الوصول (مثل private)، والمواصفات الصريحة لنوع الإرجاع (مثل int، أو الكلمة الأساسية voidإذا لم يتم إرجاع أي قيمة)، واسم الطريقة، وأخيرًا، تسلسل بين قوسين من مواصفات المعلمات المنفصلة بفاصلة، كل منها يتكون من نوع المعلمة واسمها الرسمي واختياريًا قيمة افتراضية لاستخدامها كلما لم يتم توفير أي منها. على عكس معظم اللغات الأخرى، يجب وضع علامة على معلمات الاستدعاء بالإشارة في كل من تعريف الوظيفة وموقع الاستدعاء، ويمكنك الاختيار بين refو out، حيث يسمح الأخير بتسليم متغير غير مهيأ سيكون له قيمة محددة عند الإرجاع. [77] بالإضافة إلى ذلك، يمكنك تحديد قائمة وسيطات ذات حجم متغير من خلال تطبيق الكلمة paramsالأساسية على المعلمة الأخيرة. [78] لا تتطلب أنواع معينة من الأساليب، مثل تلك التي تحصل ببساطة على قيمة حقل أو تحددها عن طريق إرجاعها أو تعيينها، توقيعًا كاملاً صريحًا، ولكن في الحالة العامة، يتضمن تعريف الفئة إعلان التوقيع الكامل لأساليبها. [79]

مثل لغة C++، وخلافًا للغة Java، يجب على مبرمجي لغة C# استخدام كلمة المفتاح الخاصة بتعديل النطاق virtualللسماح بتجاوز الأساليب بواسطة الفئات الفرعية. وخلافًا للغة C++، يجب عليك تحديد الكلمة المفتاحية صراحةً overrideعند القيام بذلك. [80] من المفترض أن يؤدي هذا إلى تجنب الارتباك بين تجاوز الوظيفة وتحميلها مرة أخرى (أي إخفاء التنفيذ السابق). للقيام بالتنفيذ الأخير، يجب عليك تحديد الكلمة newالمفتاحية. [81]

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

يسمح النوع بربط الطريقة وقت التشغيل، مما يسمح باستدعاءات طريقة تشبه JavaScript وتكوين كائنdynamic وقت التشغيل . [16] : 114–118 

يدعم C# مؤشرات الوظائف ذات النوع القوي عبر الكلمة الأساسية . ومثل إشارة C++ الزائفة و Slotdelegate في إطار عمل Qt ، فإن C# لديها دلالات خاصة تحيط بأحداث نمط النشر والاشتراك، على الرغم من أن C# تستخدم المندوبين للقيام بذلك.

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

ملكية

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

منذ C# 3.0، أصبح السكر النحوي للخصائص التي يتم تنفيذها تلقائيًا متاحًا، [82] حيث يقوم كل من الوصول (المُحصل) والمُغير (المُضبط) بتغليف العمليات على سمة واحدة من فئة.

المساحة الاسمية

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

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

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

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

الاستثناءات

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

الصيغة المستخدمة في التعامل مع الاستثناءات هي التالية:

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

  

    



    

اعتمادًا على خططك، يمكن حذف الجزء "finally". إذا لم تكن معالجة الأخطاء مطلوبة، (Exception ex)فيمكن حذف المعلمة أيضًا. كما يمكن أن يكون هناك عدة أجزاء "catch" تتعامل مع أنواع مختلفة من الاستثناءات. [86]

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

تعدد الأشكال

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

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

ومع ذلك، على عكس Java، يدعم C# التحميل الزائد للمشغل . [88]

تقدم لغة C# أيضًا التحميل الزائد للوظائف (المعروف أيضًا باسم تعدد الأشكال الارتجالي). [89]

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

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

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

+ إن استخدام LINQ في C# يجلب مزايا مثل دعم IntelliSense ، وإمكانيات التصفية القوية، وسلامة النوع مع القدرة على التحقق من أخطاء التجميع، والاتساق في استعلام البيانات عبر مجموعة متنوعة من المصادر. [93] هناك العديد من هياكل اللغة المختلفة التي يمكن استخدامها مع C# وLINQ وهي تعبيرات الاستعلام، وتعبيرات lambda، والأنواع المجهولة، والمتغيرات المكتوبة ضمناً، وطرق التمديد، ومبدئي الكائنات. [94]

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

باستخدام 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# تضيف دائمًا ميزات وظيفية بمرور الوقت، [96] [97] على سبيل المثال:

نظام النوع الشائع

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

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

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

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

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

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

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

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

الملاكمة وفك الصناديق

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

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

مثال:

int foo = 42 ; // نوع القيمة. object bar = foo ; // foo محصور في bar. int foo2 = ( int ) bar ; // غير محصور في bar مرة أخرى إلى نوع القيمة.            
        
     

المكتبات

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

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

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

أمثلة

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

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

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

وحدة التحكم .WriteLine ( "مرحبا بالعالم!" );

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

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

class Program { static void Main () { Console .WriteLine ( " مرحبا بالعالم !" ); } } 

      
    
        
    

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

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

كل سطر له غرض:

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

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

// نسخة من برنامج "Hello World" الكلاسيكي

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

برنامج الصف 

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

{ 
... }    

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

ثابت void Main ()  

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

وحدة التحكم .WriteLine ( "مرحبا بالعالم!" );

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

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

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

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

مثال

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 ) { إرجاع العناصر [ الفهرس } }   
    
         
    

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

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

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

وافقت مايكروسوفت في البداية على عدم مقاضاة مطوري البرامج مفتوحة المصدر لانتهاك براءات الاختراع في المشاريع غير الربحية للجزء من الإطار الذي يغطيه وعد المواصفات المفتوحة . [110] كما وافقت مايكروسوفت على عدم فرض براءات الاختراع المتعلقة بمنتجات Novell ضد عملاء Novell الدافعين [111] باستثناء قائمة المنتجات التي لا تذكر صراحةً C# أو .NET أو تنفيذ Novell لـ .NET ( مشروع Mono ). [112] ومع ذلك، أكدت Novell أن Mono لا ينتهك أي براءات اختراع لـ Microsoft. [113] كما أبرمت Microsoft اتفاقية محددة بعدم فرض حقوق براءات الاختراع المتعلقة بمكون متصفح Moonlight ، والذي يعتمد على Mono، شريطة الحصول عليه من خلال Novell. [114]

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

التنفيذات

طورت شركة مايكروسوفت مُجمِّعات وأدوات مرجعية مفتوحة المصدر للغة سي شارب. يقوم المُجمِّع الأول، روزلين ، بالتجميع إلى لغة وسيطة (IL)، والمُجمِّع الثاني، ريوجيت، [115] هو مُجمِّع JIT (في الوقت المناسب)، وهو ديناميكي ويقوم بالتحسين الفوري ويُجمِّع لغة الوسيطة إلى كود أصلي للواجهة الأمامية لوحدة المعالجة المركزية. [116] ريوجيت مفتوح المصدر ومكتوب بلغة سي++. [117] روزلين مكتوب بالكامل بالكود المُدار (سي شارب)، وقد تم فتحه وظهرت وظائفه كواجهات برمجة تطبيقات. وبالتالي فهو يُمكِّن المطورين من إنشاء أدوات إعادة الهيكلة والتشخيص. [4] [118] فرعان من التنفيذ الرسمي هما .NET Framework (مغلق المصدر، يعمل بنظام التشغيل Windows فقط) و.NET Core (مفتوح المصدر، ومتعدد المنصات)؛ وقد اندمجا في النهاية في تنفيذ مفتوح المصدر واحد: .NET 5.0. [119] في .NET Framework 4.6، تم استبدال المترجم JIT الجديد بالمترجم السابق. [115] [120]

مُجمِّعات C# الأخرى (بعضها يتضمن تنفيذًا للبنية الأساسية للغة المشتركة ومكتبات فئة .NET):

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

يستخدم محرك الألعاب Unity لغة C# كلغة برمجة أساسية. وقد نفذ محرك الألعاب Godot وحدة اختيارية بلغة C# بفضل تبرع بقيمة 24000 دولار من Microsoft. [121]

انظر أيضا

ملحوظات

  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. ^ "InfoQ eMag: معاينة C# 7". مؤرشف من الأصل في 24 أبريل 2023. تم الاسترجاع في 11 نوفمبر 2016 .
  2. ^ "الإعلان عن C# 12" . تم الاسترجاع في 18 نوفمبر 2023 .
  3. ^ Torgersen, Mads (27 أكتوبر 2008). "الميزات الجديدة في C# 4.0". Microsoft . مؤرشف من الأصل في 3 يناير 2012 . تم الاسترجاع في 28 أكتوبر 2008 .
  4. ^ "يوفر مُجمِّع Roslyn .NET للغات C# وVisual Basic واجهات برمجة تطبيقات لتحليل التعليمات البرمجية الغنية: dotnet/roslyn". 13 نوفمبر 2019. مؤرشف من الأصل في 22 فبراير 2021. تم الاسترجاع في 13 فبراير 2015 - عبر GitHub.
  5. ^ "CoreCLR هو وقت التشغيل لـ .NET Core. يتضمن جامع القمامة ومترجم JIT وأنواع البيانات البدائية والفئات منخفضة المستوى.: dotnet/coreclr". 13 نوفمبر 2019. مؤرشف من الأصل في 14 أكتوبر 2019. تم الاسترجاع في 8 مارس 2017 - عبر GitHub.
  6. ^ ab Naugler, David (مايو 2007). "C# 2.0 لمبرمجي C++ وJava: ورشة عمل مؤتمر". مجلة علوم الحوسبة في الكليات . 22 (5). على الرغم من أن لغة C# تأثرت بشدة بلغة Java، إلا أنها تأثرت أيضًا بشدة بلغة C++ ومن الأفضل النظر إليها باعتبارها من نسل كل من C++ وJava.
  7. ^ هاملتون، نعومي (1 أكتوبر 2008). "من الألف إلى الياء للغات البرمجة: سي شارب". Computerworld . مؤرشف من الأصل في 24 مارس 2010. تم الاسترجاع في 12 فبراير 2010. نحن جميعًا نقف على أكتاف عمالقة هنا وكل لغة تبني على ما سبقها، لذا فنحن مدينون كثيرًا للغات سي، وسي++، وجافا، ودلفي، وكل هذه الأشياء الأخرى التي سبقتنا. ( أندرس هيلسبيرج )
  8. ^ "Chapel spec (Acknowledgments)" (PDF) . Cray Inc. 1 أكتوبر 2015. مؤرشف من الأصل (PDF) في 5 فبراير 2016. تم الاسترجاع في 14 يناير 2016 .
  9. ^ "Rich Hickey Q&A by Michael Fogus". مؤرشف من الأصل في 11 يناير 2017. تم الاسترجاع في 11 يناير 2017 .
  10. ^ Borenszweig, Ary (14 يونيو 2016). "Crystal 0.18.0 released!". مؤرشف من الأصل في 25 ديسمبر 2018. تم الاسترجاع في 7 أغسطس 2017. إنه مستوحى بشكل كبير من Ruby ولغات أخرى (مثل C# وGo وPython) .
  11. ^ "لغات الويب والآلات الافتراضية: الكود السريع هو الموضة دائمًا. (V8، Dart) - Google I/O 2013". YouTube . مؤرشف من الأصل في 21 ديسمبر 2021 . تم الاسترجاع في 22 ديسمبر 2013 .
  12. ^ أضافت Java 5.0 العديد من ميزات اللغة الجديدة ( حلقة for المحسنة ، والتضمين التلقائي ، وvarargs ، والتعليقات التوضيحية )، بعد تقديمها في لغة C# المماثلة (والمتنافسة) [1] محفوظ في 19 مارس 2011، على موقع Wayback Machine [2] محفوظ في 7 يناير 2006، على موقع Wayback Machine
  13. ^ كورنيليوس، باري (1 ديسمبر 2005). "Java 5 catches up with C#". خدمات الحوسبة بجامعة أكسفورد . مؤرشف من الأصل في 6 مارس 2023. تم الاسترجاع في 18 يونيو 2014. في رأيي، فإن C# هي التي تسببت في هذه التغييرات الجذرية للغة Java. (باري كورنيليوس)
  14. ^ "التأثيرات - مرجع الصدأ". مرجع الصدأ . مؤرشف من الأصل في 26 يناير 2019. تم الاسترجاع في 18 أبريل 2023 .
  15. ^ Lattner, Chris (June 3, 2014). "Chris Lattner's Homepage". Chris Lattner. مؤرشف من الأصل في 25 ديسمبر 2018. تم الاسترجاع في 12 مايو 2020. لغة Swift هي نتاج جهد لا يكل من فريق من خبراء اللغة، وخبراء التوثيق، وخبراء تحسين المترجم، ومجموعة مهمة للغاية من خبراء التطوير الداخلي الذين قدموا ملاحظات للمساعدة في تحسين الأفكار واختبارها. بالطبع، استفادت أيضًا بشكل كبير من الخبرات التي اكتسبتها العديد من اللغات الأخرى بشق الأنفس في هذا المجال، حيث استوحت أفكارها من Objective-C وRust وHaskell وRuby وPython وC# وCLU والعديد من اللغات الأخرى التي لا يمكن سردها.
  16. ^ abcdefg سكيت 2019.
  17. ^ abcde C# Language Specification (PDF) (الطبعة الرابعة). Ecma International . يونيو 2006. مؤرشف من الأصل (PDF) في 21 أبريل 2021. تم الاسترجاع في 26 يناير 2012 .
  18. ^ Dollard, Kathleen (14 نوفمبر 2023). "الإعلان عن C# 12". مدونة .NET . مؤرشف من الأصل في 18 نوفمبر 2023. تم الاسترجاع في 18 نوفمبر 2023 .
  19. ^ سيث، جاراف (14 نوفمبر 2023). "الإعلان عن .NET 8". مدونة .NET . مؤرشف من الأصل في 19 نوفمبر 2023. تم الاسترجاع في 18 نوفمبر 2023 .
  20. ^ abcdef البحري 2022.
  21. ^ "أهداف تصميم لغة C#". www.java-samples.com . مؤرشف من الأصل في 6 أكتوبر 2021 . تم الاسترجاع في 6 أكتوبر 2021 .
  22. ^ زاندر، جيسون (22 نوفمبر 2007). "حقائق تاريخية". مؤرشف من الأصل في 29 يوليو 2020. تم الاسترجاع في 23 فبراير 2009 .
  23. ^ "ما هي اللغة التي كُتب بها ASP.Net في الأصل؟". 28 نوفمبر 2006. مؤرشف من الأصل في 24 يونيو 2016. تم الاسترجاع في 21 فبراير 2008 .
  24. ^ هاملتون، نعومي (1 أكتوبر 2008). "من الألف إلى الياء للغات البرمجة: سي شارب". Computerworld . مؤرشف من الأصل في 18 مايو 2019. تم الاسترجاع في 1 أكتوبر 2008 .
  25. ^ "التفاصيل". nilsnaegele.com . مؤرشف من الأصل في 7 أبريل 2019 . تم الاسترجاع 7 أبريل 2019 .
  26. ^ "لماذا لا تكون لغة C# من Microsoft". CNET: CBS Interactive. 2002. مؤرشف من الأصل في 14 أغسطس 2023. تم الاسترجاع في 18 سبتمبر 2023 .
  27. ^ بيل جوي (7 فبراير 2002). "النقطة العمياء لمايكروسوفت". cnet.com. مؤرشف من الأصل في 14 أغسطس 2023. تم الاسترجاع في 18 سبتمبر 2023 .
  28. ^ أوزبورن، جون (1 أغسطس 2000). "Deep Inside C#: An Interview with Microsoft Chief Architect Anders Hejlsberg". أوريلي ميديا. مؤرشف من الأصل في 9 يناير 2010. تم الاسترجاع في 14 نوفمبر 2009 .
  29. ^ "Generics (C# Programming Guide)". Microsoft. مؤرشف من الأصل في 26 أغسطس 2011. تم الاسترجاع في 21 مارس 2011 .
  30. ^ دون بوكس ​​وأندرس هيلسبيرج (فبراير 2007). "LINQ: استعلام متكامل مع لغة .NET". مايكروسوفت. مؤرشف من الأصل في 24 أغسطس 2011. تم الاسترجاع في 21 مارس 2011 .
  31. ^ ميرسر، إيان (15 أبريل 2010). "لماذا البرمجة الوظيفية وLINQ أفضل غالبًا من الكود الإجرائي". abodit.com. مؤرشف من الأصل في 11 يوليو 2011. تم الاسترجاع في 21 مارس 2011 .
  32. ^ "اعتزال أندي". مدونة دان فرنانديز . Blogs.msdn.com. 29 يناير 2004. مؤرشف من الأصل في 19 يناير 2016. تم الاسترجاع في 4 أكتوبر 2012 .
  33. ^ "اللجان الفنية - JTC 1/SC 22 - لغات البرمجة وبيئاتها وواجهات برامج النظام". ISO. مؤرشف من الأصل في 27 سبتمبر 2012. تم الاسترجاع في 4 أكتوبر 2012 .
  34. ^ "ISO/IEC 23270:2003 - Information technology - C# Language Specification". Iso.org. 23 أغسطس 2006. مؤرشف من الأصل في 8 مايو 2012. تم الاسترجاع في 4 أكتوبر 2012 .
  35. ^ "ISO/IEC 23270:2006 - تكنولوجيا المعلومات - لغات البرمجة - C#". Iso.org. 26 يناير 2012. مؤرشف من الأصل في 6 ديسمبر 2010. تم الاسترجاع في 4 أكتوبر 2012 .
  36. ^ "SO/IEC 23270:2018 تكنولوجيا المعلومات - لغات البرمجة - C#". ISO . تم الاسترجاع في 26 نوفمبر 2020 .
  37. ^ مارياني، ريكو (5 أكتوبر 2009). "تاريخي مع فيجوال ستوديو (الجزء الأول) – لمحات من أداء ريكو مارياني". لمحات من أداء ريكو مارياني . مؤرشف من الأصل في 27 مايو 2018. تم الاسترجاع في 26 مايو 2018 .
  38. ^ Kovacs, James (7 سبتمبر 2007). "درس تاريخ C#/.NET". مؤرشف من الأصل في 6 مارس 2009. تم الاسترجاع في 18 يونيو 2009 .
  39. ^ Hejlsberg, Anders (1 أكتوبر 2008). "The AZ of Programming Languages: C#". Computerworld . مؤرشف من الأصل في 2 أبريل 2015 . تم الاسترجاع في 22 يونيو 2014 .
  40. ^ "Microsoft C# FAQ". Microsoft . مؤرشف من الأصل في 14 فبراير 2006 . تم الاسترجاع في 25 مارس 2008 .
  41. ^ "F# FAQ". Microsoft Research. مؤرشف من الأصل في 18 فبراير 2009. تم الاسترجاع في 18 يونيو 2009 .
  42. ^ Simon, Raphael; Stapf, Emmanuel; Meyer, Bertrand (June 2002). "Full Eiffel on the .NET Framework". Microsoft . مؤرشف من الأصل في 21 يوليو 2009 . تم الاسترجاع في 18 يونيو 2009 .
  43. ^ "ما الجديد في لغة C# 2.0 والمترجم". مايكروسوفت. مؤرشف من الأصل في 18 ديسمبر 2010. تم الاسترجاع في 11 يونيو 2014 .
  44. ^ Hejlsberg, Anders; Torgersen, Mads (April 30, 2007). "Overview of C# 3.0". Microsoft Developer Network . Microsoft. مؤرشف من الأصل في 25 يونيو 2014 . تم الاسترجاع في 11 يونيو 2014 .
  45. ^ "استخدام C# 3.0 من .NET 2.0". Danielmoth.com. 13 مايو 2007. مؤرشف من الأصل في 29 سبتمبر 2012. تم الاسترجاع في 4 أكتوبر 2012 .
  46. ^ Hejlsberg, Anders (15 سبتمبر 2011). "الاتجاهات المستقبلية للغة C# و Visual Basic". القناة 9. BUILD2011. Microsoft. مؤرشف من الأصل في 23 سبتمبر 2011. تم الاسترجاع في 21 سبتمبر 2011 .
  47. ^ "مقدمة عن الميزات الجديدة في C# 5.0". مدونة برنامج جائزة Microsoft MVP . Microsoft. 26 مارس 2012. مؤرشف من الأصل في 4 يونيو 2014. تم الاسترجاع في 11 يونيو 2014 .
  48. ^ "مميزات اللغات في C# 6 وVB 14". GitHub . dotnet/roslyn. مؤرشف من الأصل في 12 يناير 2016. تم الاسترجاع في 13 فبراير 2015 .
  49. ^ "ما الجديد في C# 7". Microsoft Docs . 21 ديسمبر 2016. مؤرشف من الأصل في 1 نوفمبر 2017.
  50. ^ Torgersen, Mads (9 مارس 2017). "الميزات الجديدة في C# 7.0". مدونة .NET . Microsoft. مؤرشف من الأصل في 11 أبريل 2017. تم الاسترجاع في 9 يونيو 2017 .
  51. ^ "ملاحظات إصدار Visual Studio 2017 الإصدار 15.0". Microsoft Learn . 11 أبريل 2023. مؤرشف من الأصل في 20 أبريل 2023 . تم الاسترجاع 19 أبريل 2023 .
  52. ^ "ما الجديد في C# 7.1". Microsoft Docs . مؤرشف من الأصل في 10 أكتوبر 2017 . تم الاسترجاع في 9 أكتوبر 2017 .
  53. ^ "ملاحظات إصدار Visual Studio 2017 الإصدار 15.3". Microsoft Learn . 11 أبريل 2023. مؤرشف من الأصل في 21 مارس 2023 . تم الاسترجاع 19 أبريل 2023 .
  54. ^ "ما الجديد في C# 7.2". Microsoft Docs . مؤرشف من الأصل في 1 ديسمبر 2017 . تم الاسترجاع في 26 نوفمبر 2017 .
  55. ^ "ملاحظات إصدار Visual Studio 2017 الإصدار 15.5". Microsoft Learn . 11 أبريل 2023. مؤرشف من الأصل في 20 أبريل 2023 . تم الاسترجاع 19 أبريل 2023 .
  56. ^ "ما الجديد في C# 7.3". Microsoft Docs . مؤرشف من الأصل في 23 يونيو 2018 . تم الاسترجاع في 23 يونيو 2018 .
  57. ^ "ملاحظات إصدار Visual Studio 2017 الإصدار 15.7". Microsoft Learn . 13 يوليو 2022. مؤرشف من الأصل في 20 أبريل 2023 . تم الاسترجاع 19 أبريل 2023 .
  58. ^ "ما الجديد في C# 8.0". Microsoft Docs . 9 مارس 2023. مؤرشف من الأصل في 6 سبتمبر 2020. تم الاسترجاع في 14 أبريل 2019 .
  59. ^ "ملاحظات إصدار Visual Studio 2019 الإصدار 16.3". Microsoft Learn . 11 أبريل 2023. مؤرشف من الأصل في 20 أبريل 2023 . تم الاسترجاع 19 أبريل 2023 .
  60. ^ BillWagner. "What's new in C# 9.0 - C# Guide". Microsoft Learn . مؤرشف من الأصل في 5 سبتمبر 2020 . تم الاسترجاع في 15 أكتوبر 2020 .
  61. ^ "ملاحظات إصدار Visual Studio 2019 الإصدار 16.8". Microsoft Learn . 11 أبريل 2023. مؤرشف من الأصل في 20 أبريل 2023 . تم الاسترجاع 19 أبريل 2023 .
  62. ^ "ما الجديد في C# 10". Microsoft Learn . مؤرشف من الأصل في 8 فبراير 2022 . تم الاسترجاع في 10 نوفمبر 2021 .
  63. ^ "ملاحظات إصدار Visual Studio 2022 الإصدار 17.0". Microsoft Learn . مؤرشف من الأصل في 16 يوليو 2023 . تم الاسترجاع في 19 أبريل 2023 .
  64. ^ "ما الجديد في C# 11". Microsoft Learn . مؤرشف من الأصل في 15 أغسطس 2022 . تم الاسترجاع في 8 أغسطس 2022 .
  65. ^ "ملاحظات إصدار Visual Studio 2022 الإصدار 17.4". Microsoft Learn . مؤرشف من الأصل في 6 أغسطس 2023 . تم الاسترجاع في 19 أبريل 2023 .
  66. ^ "ما الجديد في C# 12". Microsoft Learn . مؤرشف من الأصل في 20 يوليو 2023 . تم الاسترجاع في 29 يونيو 2023 .
  67. ^ "ملاحظات إصدار Visual Studio 2022 الإصدار 17.6". Microsoft Learn . مؤرشف من الأصل في 6 أغسطس 2023 . تم الاسترجاع في 29 يونيو 2023 .
  68. ^ نوفاك وآخرون. 2010.
  69. ^ stevewhims; mattwojo (20 أكتوبر 2022). "تجميع التطبيقات باستخدام .NET Native - تطبيقات UWP". learn.microsoft.com . مؤرشف من الأصل في 27 أكتوبر 2023 . تم الاسترجاع في 27 أكتوبر 2023 .
  70. ^ LakshanF; agocke; Rick-Anderson; et al. (12 سبتمبر 2023). "نظرة عامة على نشر AOT الأصلي - .NET". learn.microsoft.com . مؤرشف من الأصل في 11 نوفمبر 2023 . تم الاسترجاع في 27 أكتوبر 2023 .{{cite web}}:CS1 maint: أسماء رقمية: قائمة المؤلفين ( الرابط )
  71. ^ "الأنواع/العامة، جزء من وثائق C# الرسمية". مايكروسوفت . مؤرشف من الأصل في 29 مارس 2024. تم الاسترجاع في 6 أبريل 2024 .
  72. ^ BillWagner. "Expression Trees (C#)". Microsoft Learn . مؤرشف من الأصل في 15 مايو 2021 . تم الاسترجاع في 14 مايو 2021 .
  73. ^ dotnet-bot. "System.Reflection.Emit Namespace". learn.microsoft.com . مؤرشف من الأصل في 28 أبريل 2023 . تم الاسترجاع في 28 أبريل 2023 .
  74. ^ McAllister, Neil (20 أكتوبر 2011). "Microsoft's Roslyn: Reinventing the compiler as we know it". InfoWorld . مؤرشف من الأصل في 5 مارس 2022 . تم الاسترجاع في 5 مارس 2022 .
  75. ^ "مقدمة عن مولدات المصدر بلغة C#". مدونة .NET . 29 أبريل 2020. مؤرشف من الأصل في 7 مايو 2021. تم الاسترجاع في 14 مايو 2021 .
  76. ^ "الفئات/الحقول، جزء من وثائق C# الرسمية".
  77. ^ "out (مرجع C#)".
  78. ^ "معلمات الطريقة/معدل المعلمات، جزء من وثائق C# الرسمية".
  79. ^ ab "الفئات/الخصائص، جزء من وثائق C# الرسمية".
  80. ^ "virtual (C# Reference)". Microsoft Learn . 15 سبتمبر 2021. مؤرشف من الأصل في 30 أغسطس 2018 . تم الاسترجاع في 4 أبريل 2018 .
  81. ^ "مُعدِّل جديد، جزء من وثائق C# الرسمية".
  82. ^ "الخصائص المنفذة تلقائيًا (دليل برمجة C#)". مؤرشف من الأصل في 29 أكتوبر 2020. تم الاسترجاع في 12 سبتمبر 2020 .
  83. ^ "استخدام التوجيه - مرجع C#". Microsoft Docs . مؤرشف من الأصل في 14 أبريل 2019 . تم الاسترجاع في 14 أبريل 2019 .
  84. ^ BillWagner. "الكود غير الآمن، ومؤشرات البيانات، ومؤشرات الوظائف". Microsoft Learn . مؤرشف من الأصل في 4 يوليو 2021 . تم الاسترجاع في 20 يونيو 2021 .
  85. ^ "كيفية إنشاء استثناءات محددة للمستخدم". مؤرشف من الأصل في 26 يناير 2021 . تم الاسترجاع في 12 سبتمبر 2020 .
  86. ^ "عبارات معالجة الاستثناءات، جزء من وثائق C# الرسمية". Microsoft Learn . تم الاسترجاع في 26 يونيو 2024 .
  87. ^ Venners, Bill; Eckel, Bruce (18 أغسطس 2003). "The Trouble with Checked Exceptions". مؤرشف من الأصل في 18 فبراير 2015. تم الاسترجاع في 30 مارس 2010 .
  88. ^ BillWagner. "Operator overloading - C# reference". Microsoft Learn . مؤرشف من الأصل في 24 يونيو 2021 . تم الاسترجاع في 20 يونيو 2021 .
  89. ^ "حل التعبيرات/الحمل الزائد، جزء من وثائق C# الرسمية". Microsoft Learn . تم الاسترجاع في 7 أبريل 2024 .
  90. ^ "الأنواع/الأنواع المصنّعة، جزء من وثائق C# الرسمية". Microsoft Learn . تم الاسترجاع في 7 أبريل 2024 .
  91. ^ "قيود معلمات الفئات/النوع، جزء من وثائق C# الرسمية". Microsoft Learn . تم الاسترجاع في 7 أبريل 2024 .
  92. ^ Zhang, Xue Dong; Teng, Zi Mu; Zhao, Dong Wang (سبتمبر 2014). "بحث في تكنولوجيا الوصول إلى قاعدة البيانات تحت إطار عمل .NET". Applied Mechanics and Materials . 644–650: 3077–3080. doi :10.4028/www.scientific.net/AMM.644-650.3077. S2CID  62201466. ProQuest  1565579768.
  93. ^ Otey, Michael (فبراير 2006). "LINQ to the Future". مجلة SQL Server . المجلد 8، العدد 2. ص 17-21. ProQuest  214859896.
  94. ^ شيلدون، ويليام (نوفمبر 2010). "الميزات الجديدة في LINQ". مجلة SQL Server . المجلد 12، العدد 11. ص 37-40. بروكويست  770609095.
  95. ^ BillWagner (15 سبتمبر 2021). "Query Syntax and Method Syntax in LINQ (C#)". learn.microsoft.com . مؤرشف من الأصل في 23 مايو 2023 . تم الاسترجاع في 23 مايو 2023 .
  96. ^ erikdietrich (9 مارس 2023). "تاريخ C# - دليل C#". learn.microsoft.com . مؤرشف من الأصل في 28 أبريل 2023 . تم الاسترجاع في 28 أبريل 2023 .
  97. ^ الرحلة الوظيفية لـ C# - Mads Torgersen - NDC Copenhagen 2022، تم أرشفة النسخة الأصلية في 15 مايو 2023 ، تم استرجاعها في 15 مايو 2023
  98. ^ "جمال الإغلاقات". csharpindepth.com . مؤرشف من الأصل في 19 مايو 2023. تم الاسترجاع في 28 أبريل 2023 .
  99. ^ من تأليف BillWagner. "الوظائف المجهولة - دليل برمجة C#". Microsoft Learn . مؤرشف من الأصل في 15 أبريل 2021 . تم الاسترجاع في 15 مايو 2021 .
  100. ^ abc "ما الجديد في C# 7.0". Microsoft Docs . مؤرشف من الأصل في 6 أغسطس 2020 . تم الاسترجاع في 14 أبريل 2019 .
  101. ^ "C# 9.0 on the record". .NET Blog . 10 نوفمبر 2020. مؤرشف من الأصل في 15 مايو 2021 . تم الاسترجاع في 15 مايو 2021 .
  102. ^ BillWagner (30 يونيو 2022). "init keyword - C# Reference". learn.microsoft.com . مؤرشف من الأصل في 19 مايو 2023 . تم الاسترجاع في 19 مايو 2023 .
  103. ^ منصة مُجمِّع .NET، منصة .NET، 28 أبريل 2023، مؤرشف من الأصل في 28 أبريل 2023 ، تم استرجاعه في 28 أبريل 2023
  104. ^ أ ب ج د آرتشر 2001.
  105. ^ ليبرت، إيريك (19 مارس 2009). "التمثيل والهوية". مغامرات رائعة في البرمجة . Blogs.msdn.com. مؤرشف من الأصل في 12 يوليو 2011. تم الاسترجاع في 4 أكتوبر 2012 .
  106. ^ "Framework Libraries". Microsoft Learn . 19 أبريل 2023. مؤرشف من الأصل في 14 يوليو 2019. تم الاسترجاع 14 يوليو 2019 .
  107. ^ BillWagner. "ما الجديد في C# 9.0 - دليل C#". Microsoft Learn . مؤرشف من الأصل في 5 سبتمبر 2020 . تم الاسترجاع في 14 مايو 2021 .
  108. ^ BillWagner. "Main() وحجج سطر الأوامر". Microsoft Learn . مؤرشف من الأصل في 5 أغسطس 2021 . تم الاسترجاع في 5 أغسطس 2021 .
  109. ^ "إطلاق العنان لقوة Generics C#: دليل شامل". 24 أبريل 2024.
  110. ^ "تعهد براءات الاختراع لمطوري البرمجيات مفتوحة المصدر". 16 مارس 2023. مؤرشف من الأصل في 7 ديسمبر 2017. تم الاسترجاع 28 أكتوبر 2017 .
  111. ^ "اتفاقية التعاون بشأن البراءات - التعاون بين مايكروسوفت ونوفيل في مجال التشغيل البيني". مايكروسوفت . 2 نوفمبر 2006. مؤرشف من الأصل في 17 مايو 2009. تم الاسترجاع في 5 يوليو 2009. تتعهد مايكروسوفت، نيابة عن نفسها وعن شركاتها التابعة (يشار إليها مجتمعة باسم "مايكروسوفت")، بعدم مقاضاة عملاء نوفيل وعملاء شركات نوفيل التابعة بسبب انتهاك براءات الاختراع المغطاة لشركة مايكروسوفت بسبب استخدام هذا العميل لنسخ محددة من منتج مغطى كما وزعته نوفيل أو شركاتها التابعة (يشار إليها مجتمعة باسم "نوفيل") والتي تلقت نوفيل عنها إيرادات (بشكل مباشر أو غير مباشر) مقابل هذه النسخ المحددة؛ بشرط أن يقتصر العهد السابق على استخدام هذا العميل (أ) لهذه النسخ المحددة التي أذنت بها شركة Novell في مقابل هذه الإيرادات، و(ب) ضمن النطاق الذي أذنت به شركة Novell في مقابل هذه الإيرادات.
  112. ^ "تعريفات". مايكروسوفت . 2 نوفمبر 2006. مؤرشف من الأصل في 4 نوفمبر 2012. تم الاسترجاع في 5 يوليو 2009 .
  113. ^ Steinman, Justin (7 نوفمبر 2006). "Novell Answers Questions from the Community". مؤرشف من الأصل في 16 يوليو 2013. تم الاسترجاع في 5 يوليو 2009. نؤكد أن Mono لا ينتهك أي براءات اختراع لشركة Microsoft.
  114. ^ "العهد إلى المتلقين النهائيين لـ Moonlight - تعاون Microsoft & Novell للتشغيل البيني". Microsoft . 28 سبتمبر 2007. مؤرشف من الأصل في 23 سبتمبر 2010. تم الاسترجاع في 8 مارس 2008 ."المستلم النهائي" يعني كيانًا أو فردًا يستخدم للغرض المقصود منه تطبيق Moonlight الذي تم الحصول عليه مباشرة من Novell أو من خلال مستلم وسيط... تحتفظ Microsoft بالحق في تحديث (بما في ذلك إيقاف) العهد السابق... "تطبيق Moonlight" يعني فقط تلك الأجزاء المحددة من Moonlight 1.0 أو Moonlight 1.1 التي تعمل فقط كمكون إضافي للمتصفح على جهاز كمبيوتر شخصي ولا يتم ترخيصها بموجب GPLv3 أو ترخيص مماثل.
  115. ^ ab "اكتمل انتقال RyuJIT!". microsoft.com . 19 يونيو 2018. مؤرشف من الأصل في 19 يوليو 2019 . تم الاسترجاع في 20 يوليو 2021 .
  116. ^ "Managed Execution Process". microsoft.com . مؤرشف من الأصل في 23 ديسمبر 2017 . تم الاسترجاع في 20 يوليو 2021 .
  117. ^ "coreclr/src/jit/". github.com . مؤرشف من الأصل في 9 يناير 2019 . تم الاسترجاع في 20 يوليو 2021 .
  118. ^ "دليل C#". Microsoft Learn . مؤرشف من الأصل في 13 أغسطس 2022 . تم الاسترجاع في 28 يوليو 2017 .
  119. ^ "5.0.8" .microsoft.com . مؤرشف من الأصل في 23 أبريل 2020 . تم الاسترجاع في 20 يوليو 2021 .
  120. ^ "التخفيف: مُجمِّع JIT جديد 64 بت". microsoft.com . مؤرشف من الأصل في 5 أبريل 2018 . تم الاسترجاع في 20 يوليو 2021 .
  121. ^ Etcheverry, Ignacio (21 أكتوبر 2017). "Introducing C# in Godot". Godot Engine . مؤرشف من الأصل في 26 أكتوبر 2018 . تم الاسترجاع في 26 أكتوبر 2018 .

مصادر

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

قراءة إضافية

  • درايتون، بيتر. البحاري، بن؛ نيوارد، تيد (2002). مرجع جيب لغة C# . أورايلي. رقم ISBN 0-596-00429-X.
  • بيتزولد، تشارلز (2002). برمجة مايكروسوفت ويندوز باستخدام سي شارب . مطبعة مايكروسوفت. رقم ISBN 0-7356-1370-2.
  • مواصفات لغة C#
  • دليل برمجة C#
  • مواصفات لغة ISO C#
  • كود المصدر لمنصة المترجم C# ("Roslyn")
تم الاسترجاع من "https://en.wikipedia.org/w/index.php?title=C_Sharp_(لغة_برمجة)&oldid=1253774470"
Original text
Rate this translation
Your feedback will be used to help improve Google Translate