C#: قواعد النحو الأساسية
1. هيكل البرنامج
يتكون البرنامج الكلاسيكي بلغة C# من توجيهات using، وnamespace، وclass، وMain.
- التوجيه: يستورد مساحة أسماء حتى لا تضطر إلى كتابة المسارات الكاملة
- مساحة الأسماء: حاوية منطقية لتنظيم الكود وتجنب تعارضات التسمية
- الفئة: لغة C# هي لغة موجهة للكائنات؛ ويجب أن يكون كل الكود موجودًا داخل فئة
- الطريقة الرئيسية: نقطة دخول البرنامج التي يبدأ عندها التنفيذ
▶ مثال
using System;
namespace MyApp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
}
Hello, World!
2. الجمل والفاصلة المنقوطة
يجب أن تنتهي كل جملة في لغة C# بفاصلة منقوطة ;. الفاصلة المنقوطة هي علامة إنهاء الجملة التي تُبيّن للمترجم أين تنتهي كل تعليمة. وسيؤدي عدم وجود الفاصلة المنقوطة إلى حدوث خطأ في الترجمة.
▶ مثال
using System;
namespace StatementDemo
{
class Program
{
static void Main()
{
int x = 10;
int y = 20;
int sum = x + y;
Console.WriteLine(sum);
}
}
}
30
3. كتل الكود والأقواس
يُحاط كتلة الكود بأقواس معقوفة { }، مما يجمع عدة جمل برمجية في وحدة منطقية واحدة. وتتطلب كل من مساحات الأسماء، والفئات، والأساليب، والعبارات الشرطية، والحلقات وجود كتل كود. ويمكن أن تكون الأقواس المعقوفة متداخلة.
namespace Outer
{
namespace Inner
{
class MyClass
{
void MyMethod()
{
if (true)
{
Console.WriteLine("nested block");
}
}
}
}
}
4. المسافات البادئة وأسلوب كتابة الكود
التبويب الجيد يجعل قراءة الكود أسهل. يوصي مجتمع C# باستخدام 4 مسافات للتبويب. وهناك نمطان شائعان للأقواس:
- أسلوب أولمان: وضع القوس الافتتاحي في سطر منفصل (شائع في لغة C#)
- أسلوب K&R: وضع قوس الافتتاح في نهاية السطر السابق
class StyleA
{
void Method()
{
Console.WriteLine("Allman style");
}
}
class StyleB {
void Method() {
Console.WriteLine("K&R style");
}
}
نصيحة: يستخدم Visual Studio أسلوب «ألمان» بشكل افتراضي. والأهم من ذلك هو الحفاظ على الاتساق داخل المشروع نفسه.
5. إخراج وحدة التحكم
يُستخدم كل من Console.Write وConsole.WriteLine لإخراج النص إلى وحدة التحكم:
- Console.Write: يعرض النص دون إضافة حرف خط جديد في النهاية
- Console.WriteLine: يعرض نصًا متبوعًا بسطر جديد
▶ مثال
using System;
namespace ConsoleDemo
{
class Program
{
static void Main()
{
Console.Write("Hello");
Console.Write(" ");
Console.WriteLine("World");
Console.WriteLine("Second line");
}
}
}
Hello World
Second line
6. أحرف الهروب
يجب استخدام علامة الباكسلش \ لتفادي بعض الأحرف الموجودة داخل السلاسل حتى يتم عرضها بشكل صحيح:
| تسلسل الهروب | المعنى |
|---|---|
\n |
سطر جديد |
\t |
علامة التبويب |
\\ |
شرطة مائلة عكسية |
\" |
علامة اقتباس مزدوجة |
\' |
علامة الاقتباس المفردة |
▶ مثال
using System;
namespace EscapeDemo
{
class Program
{
static void Main()
{
Console.WriteLine("Line1\nLine2");
Console.WriteLine("Name\tAge");
Console.WriteLine("Path: C:\\Users\\Doc");
Console.WriteLine("He said \"Hello\"");
}
}
}
Line1
Line2
Name Age
Path: C:\Users\Doc
He said "Hello"
تحذير: إذا كانت السلسلة تحتوي على العديد من علامات البار المقلوب (مثل مسارات الملفات)، فاستخدم سلسلة حرفية
@"..."، حيث لا تحتاج\إلى الهروب بعد الآن.
7. التعليقات
التعليقات هي ملاحظات موجهة للمطورين، ولا يأخذها المُترجم في الاعتبار. تدعم لغة C# ثلاثة أنواع من التعليقات:
//: تعليق من سطر واحد؛ يتم تجاهل كل ما يلي//حتى نهاية السطر/* */: تعليق متعدد الأسطر؛ يمكن أن يمتد على عدة أسطر///: تعليق توثيقي بتنسيق XML؛ يمكنه إنشاء وثائق واجهة برمجة التطبيقات (API)
using System;
namespace CommentDemo
{
class Program
{
static void Main()
{
Console.WriteLine("hello");
Console.WriteLine("world");
/*
Console.WriteLine("skipped");
Console.WriteLine("also skipped");
*/
Console.WriteLine("end");
}
/// <summary>
/// Calculate the sum of two numbers
/// </summary>
static int Add(int a, int b)
{
return a + b;
}
}
}
hello
world
end
نصيحة: تُستخدم تعليقات التوثيق في XML (
///) بشكل شائع في واجهات برمجة التطبيقات العامة. يعرض Visual Studio هذه الأوصاف عند استدعاء الدالة.
8. العبارات ذات المستوى الأعلى
ابتداءً من C# 9، تتيح لك العبارات ذات المستوى الأعلى تخطي الأكواد النمطية namespace وclass وMain، وكتابة المنطق مباشرةً في المستوى الأعلى للملف. ويقوم المُجمِّع تلقائيًّا بإنشاء طريقة الدخول.
▶ مثال
using System;
Console.WriteLine("Top-level statement!");
int result = 40 + 2;
Console.WriteLine($"The answer is {result}");
Top-level statement!
The answer is 42
نصيحة: لا يمكن استخدام العبارات ذات المستوى الأعلى إلا في ملف واحد فقط لكل مشروع. ويؤدي استخدامها في ملفات متعددة إلى حدوث خطأ في الترجمة.
9. مساحات الأسماء على مستوى الملف
ابتداءً من الإصدار C# 10، تتيح لك مساحات الأسماء ذات نطاق الملف استخدام namespace MyApp; بدلاً من مساحة الأسماء التقليدية ذات نمط الكتلة، مما يقلل مستوى واحدًا من التداخل:
namespace MyApp;
class Program
{
static void Main()
{
Console.WriteLine("File-scoped namespace");
}
}
وهذا يعادل:
namespace MyApp
{
class Program
{
static void Main()
{
Console.WriteLine("File-scoped namespace");
}
}
}
نصيحة: تجعل مساحات الأسماء المحددة بنطاق الملف الكود أكثر إيجازًا، ويُنصح باستخدامها في المشاريع الجديدة.
❓ أسئلة شائعة
📖 ملخص
- يتكون برنامج C# من توجيهات الاستخدام، ومساحة الأسماء، والفئة، ودالة Main
- يجب أن تنتهي كل جملة بفاصلة منقوطة
- تُحاط كتل الأكواد بأقواس معقوفة ويمكن تداخلها
- لا تضيف الدالة Console.Write سطراً جديداً؛ أما الدالة Console.WriteLine فتضيف سطراً جديداً
- تستخدم أحرف الهروب البادئة «\»؛ أما السلاسل النصية الحرفية
@"..."فتتجنب استخدام أحرف الهروب - ثلاثة أنواع من التعليقات: سطر واحد
//، عدة أسطر/* */، مستند XML/// - تعمل العبارات ذات المستوى الأعلى (C# 9+) على تبسيط كود نقطة الدخول
- تقلل مساحات الأسماء على مستوى الملف (C# 10+) من مستويات التداخل
📝 تمارين
- اكتب برنامجًا للوحدة الطرفية يستخدم Console.Write وConsole.WriteLine لعرض اسمك وعمرك
- استخدم أحرف الهروب لإخراج ثلاثة أسطر من النص في جملة Console.WriteLine واحدة
- إعادة كتابة بنية برنامج كلاسيكي باستخدام عبارات المستوى الأعلى
- إضافة تعليقات توثيقية بتنسيق XML إلى إحدى الطرق، بما في ذلك العلامات
<summary>و<param>