C#: قواعد النحو الأساسية

1. هيكل البرنامج

يتكون البرنامج الكلاسيكي بلغة C# من توجيهات using، وnamespace، وclass، وMain.

▶ مثال

CSHARP
using System;

namespace MyApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");
        }
    }
}
▶ جرّب الكود
TEXT 📖 للعرض فقط
Hello, World!

2. الجمل والفاصلة المنقوطة

يجب أن تنتهي كل جملة في لغة C# بفاصلة منقوطة ;. الفاصلة المنقوطة هي علامة إنهاء الجملة التي تُبيّن للمترجم أين تنتهي كل تعليمة. وسيؤدي عدم وجود الفاصلة المنقوطة إلى حدوث خطأ في الترجمة.

▶ مثال

CSHARP
using System;

namespace StatementDemo
{
    class Program
    {
        static void Main()
        {
            int x = 10;
            int y = 20;
            int sum = x + y;
            Console.WriteLine(sum);
        }
    }
}
▶ جرّب الكود
TEXT 📖 للعرض فقط
30

3. كتل الكود والأقواس

يُحاط كتلة الكود بأقواس معقوفة { }، مما يجمع عدة جمل برمجية في وحدة منطقية واحدة. وتتطلب كل من مساحات الأسماء، والفئات، والأساليب، والعبارات الشرطية، والحلقات وجود كتل كود. ويمكن أن تكون الأقواس المعقوفة متداخلة.

CSHARP
namespace Outer
{
    namespace Inner
    {
        class MyClass
        {
            void MyMethod()
            {
                if (true)
                {
                    Console.WriteLine("nested block");
                }
            }
        }
    }
}

4. المسافات البادئة وأسلوب كتابة الكود

التبويب الجيد يجعل قراءة الكود أسهل. يوصي مجتمع C# باستخدام 4 مسافات للتبويب. وهناك نمطان شائعان للأقواس:

CSHARP
class StyleA
{
    void Method()
    {
        Console.WriteLine("Allman style");
    }
}

class StyleB {
    void Method() {
        Console.WriteLine("K&R style");
    }
}

نصيحة: يستخدم Visual Studio أسلوب «ألمان» بشكل افتراضي. والأهم من ذلك هو الحفاظ على الاتساق داخل المشروع نفسه.


5. إخراج وحدة التحكم

يُستخدم كل من Console.Write وConsole.WriteLine لإخراج النص إلى وحدة التحكم:

▶ مثال

CSHARP
using System;

namespace ConsoleDemo
{
    class Program
    {
        static void Main()
        {
            Console.Write("Hello");
            Console.Write(" ");
            Console.WriteLine("World");
            Console.WriteLine("Second line");
        }
    }
}
▶ جرّب الكود
TEXT 📖 للعرض فقط
Hello World
Second line

6. أحرف الهروب

يجب استخدام علامة الباكسلش \ لتفادي بعض الأحرف الموجودة داخل السلاسل حتى يتم عرضها بشكل صحيح:

تسلسل الهروب المعنى
\n سطر جديد
\t علامة التبويب
\\ شرطة مائلة عكسية
\" علامة اقتباس مزدوجة
\' علامة الاقتباس المفردة

▶ مثال

CSHARP
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\"");
        }
    }
}
▶ جرّب الكود
TEXT 📖 للعرض فقط
Line1
Line2
Name	Age
Path: C:\Users\Doc
He said "Hello"

تحذير: إذا كانت السلسلة تحتوي على العديد من علامات البار المقلوب (مثل مسارات الملفات)، فاستخدم سلسلة حرفية @"..."، حيث لا تحتاج \ إلى الهروب بعد الآن.


7. التعليقات

التعليقات هي ملاحظات موجهة للمطورين، ولا يأخذها المُترجم في الاعتبار. تدعم لغة C# ثلاثة أنواع من التعليقات:

CSHARP
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;
        }
    }
}
TEXT 📖 للعرض فقط
hello
world
end

نصيحة: تُستخدم تعليقات التوثيق في XML (///) بشكل شائع في واجهات برمجة التطبيقات العامة. يعرض Visual Studio هذه الأوصاف عند استدعاء الدالة.


8. العبارات ذات المستوى الأعلى

ابتداءً من C# 9، تتيح لك العبارات ذات المستوى الأعلى تخطي الأكواد النمطية namespace وclass وMain، وكتابة المنطق مباشرةً في المستوى الأعلى للملف. ويقوم المُجمِّع تلقائيًّا بإنشاء طريقة الدخول.

▶ مثال

CSHARP
using System;

Console.WriteLine("Top-level statement!");
int result = 40 + 2;
Console.WriteLine($"The answer is {result}");
▶ جرّب الكود
TEXT 📖 للعرض فقط
Top-level statement!
The answer is 42

نصيحة: لا يمكن استخدام العبارات ذات المستوى الأعلى إلا في ملف واحد فقط لكل مشروع. ويؤدي استخدامها في ملفات متعددة إلى حدوث خطأ في الترجمة.


9. مساحات الأسماء على مستوى الملف

ابتداءً من الإصدار C# 10، تتيح لك مساحات الأسماء ذات نطاق الملف استخدام namespace MyApp; بدلاً من مساحة الأسماء التقليدية ذات نمط الكتلة، مما يقلل مستوى واحدًا من التداخل:

CSHARP
namespace MyApp;

class Program
{
    static void Main()
    {
        Console.WriteLine("File-scoped namespace");
    }
}

وهذا يعادل:

CSHARP
namespace MyApp
{
    class Program
    {
        static void Main()
        {
            Console.WriteLine("File-scoped namespace");
        }
    }
}

نصيحة: تجعل مساحات الأسماء المحددة بنطاق الملف الكود أكثر إيجازًا، ويُنصح باستخدامها في المشاريع الجديدة.


❓ أسئلة شائعة

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

📖 ملخص

📝 تمارين

  1. اكتب برنامجًا للوحدة الطرفية يستخدم Console.Write وConsole.WriteLine لعرض اسمك وعمرك
  2. استخدم أحرف الهروب لإخراج ثلاثة أسطر من النص في جملة Console.WriteLine واحدة
  3. إعادة كتابة بنية برنامج كلاسيكي باستخدام عبارات المستوى الأعلى
  4. إضافة تعليقات توثيقية بتنسيق XML إلى إحدى الطرق، بما في ذلك العلامات <summary> و<param>
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%