C#: المدخلات والمخرجات

1. Console.Write و Console.WriteLine

يُخرج Console.Write النص دون إضافة حرف خط جديد في نهايته، بينما يُضيف Console.WriteLine حرف خط جديد تلقائيًّا.

▶ مثال

CSHARP
Console.Write("Hello");
Console.Write(" ");
Console.WriteLine("World");
Console.WriteLine("Second line");
▶ جرّب الكود
TEXT 📖 للعرض فقط
Hello World
Second line

2. تنسيق العناصر النائبة

استخدم {0} و{1} وما إلى ذلك كعناصر بديلة لإدراج قيم المتغيرات في سلسلة نصية، مع سرد الحجج المقابلة بالترتيب بعد سلسلة التنسيق.

▶ مثال

CSHARP
string name = "Alice";
int age = 25;
Console.WriteLine("Name: {0}, Age: {1}", name, age);
Console.WriteLine("{0} is {1} years old, {0} is a programmer", name, age);
▶ جرّب الكود
TEXT 📖 للعرض فقط
Name: Alice, Age: 25
Alice is 25 years old, Alice is a programmer

3. الاستيفاء في السلاسل

أضف البادئة $ إلى السلسلة، واكتب المتغيرات أو التعبيرات مباشرةً داخل {}. وهذا أسهل في القراءة مقارنة بتنسيق العناصر النائبة.

▶ مثال

CSHARP
string name = "Bob";
int age = 30;
Console.WriteLine($"Name: {name}, Age: {age}");
int x = 10, y = 20;
Console.WriteLine($"Result: {x + y}");
▶ جرّب الكود
TEXT 📖 للعرض فقط
Name: Bob, Age: 30
Result: 30

4. التحكم في المحاذاة

حدد العرض باستخدام فاصلة في العناصر النائبة أو عمليات الاستيفاء: تؤدي القيم الموجبة إلى محاذاة النص إلى اليمين، بينما تؤدي القيم السالبة إلى محاذاة النص إلى اليسار. على سبيل المثال، يتم محاذاة {0,10} إلى اليمين بعرض 10، بينما يتم محاذاة {0,-10} إلى اليسار بعرض 10.

▶ مثال

CSHARP
Console.WriteLine("|{0,10}|", "Right");
Console.WriteLine("|{0,-10}|", "Left");
Console.WriteLine($"|{"InterpR",10}|");
Console.WriteLine($"|{"InterpL",-10}|");
▶ جرّب الكود
TEXT 📖 للعرض فقط
|     Right|
|Left      |
|   InterpR|
|InterpL   |

5. التحكم الدقيق

استخدم محددات التنسيق للتحكم في دقة الأرقام: F2 تحتفظ بـ 2 خانات عشرية، وF4 تحتفظ بـ 4 خانات عشرية، وهكذا دواليك.

▶ مثال

CSHARP
double pi = 3.14159265;
Console.WriteLine("{0:F2}", pi);
Console.WriteLine("{0:F4}", pi);
Console.WriteLine($"{pi:F3}");
▶ جرّب الكود
TEXT 📖 للعرض فقط
3.14
3.1416
3.142

6. محددات التنسيق الشائعة

المُحدد الاسم الوصف
C العملة يضيف رمز العملة
D عشري يملأ العدد الصحيح بالأصفار
F النقطة الثابتة عدد الخانات العشرية الثابتة
P النسبة المئوية تُضرب في 100، وتُضاف النسبة المئوية
X سداسي عشري يحول إلى النظام السداسي العشري

▶ مثال

CSHARP
int num = 255;
double money = 1234.56;
double ratio = 0.856;
Console.WriteLine($"Currency: {money:C}");
Console.WriteLine($"Decimal: {num:D6}");
Console.WriteLine($"Fixed-point: {money:F1}");
Console.WriteLine($"Percent: {ratio:P1}");
Console.WriteLine($"Hexadecimal: {num:X}");
▶ جرّب الكود
TEXT 📖 للعرض فقط
Currency: ¤1,234.56
Decimal: 000255
Fixed-point: 1234.6
Percent: 85.6%
Hexadecimal: FF

7. استخدام Console.ReadLine لإدخال البيانات

تقوم Console.ReadLine() بقراءة سطر من النص من وحدة التحكم وتعيده كـ string. وتُرجع null عند الوصول إلى نهاية دفق الإدخال.

▶ مثال

CSHARP
Console.WriteLine("Please enter your name:");
string input = Console.ReadLine();
Console.WriteLine($"Hello, {input}!");
▶ جرّب الكود
TEXT 📖 للعرض فقط
Please enter your name:
Charlie
Hello, Charlie!

8. تحويل المدخلات الرقمية

نظرًا لأن Console.ReadLine() تُرجع سلسلة نصية، فاستخدم int.Parse أو int.TryParse أو Convert.ToInt32 لتحويلها إلى رقم.

▶ مثال

CSHARP
string str1 = "42";
int num1 = int.Parse(str1);
int num2 = Convert.ToInt32(str1);

string str2 = "abc";
if (int.TryParse(str2, out int result))
{
    Console.WriteLine($"Conversion succeeded: {result}");
}
else
{
    Console.WriteLine("Conversion failed, input is not a valid integer");
}

Console.WriteLine($"Parse result: {num1}");
Console.WriteLine($"Convert result: {num2}");
▶ جرّب الكود
TEXT 📖 للعرض فقط
Conversion failed, input is not a valid integer
Parse result: 42
Convert result: 42

9. Console.ReadKey لإدخال مفتاح واحد

تقوم Console.ReadKey() بقراءة ضغطة مفتاح واحدة دون الحاجة إلى الضغط على مفتاح Enter. وتُرجع كائنًا من نوع ConsoleKeyInfo، ويمكن الوصول إلى الحرف عبر KeyChar.

▶ مثال

CSHARP
Console.WriteLine("Press any key to continue...");
ConsoleKeyInfo key = Console.ReadKey();
Console.WriteLine();
Console.WriteLine($"You pressed: {key.KeyChar}");
▶ جرّب الكود
TEXT 📖 للعرض فقط
Press any key to continue...
A
You pressed: A

10. التعبيرات والتنسيق في عملية الاستيفاء

يمكنك كتابة تعبيرات داخل عملية الإقحام {}، كما يمكنك الجمع بين محددات التنسيق والمحاذاة. وتكون صيغة الكتابة {expression,alignment:formatSpecifier}.

▶ مثال

CSHARP
double price = 29.9;
int quantity = 3;
Console.WriteLine($"Unit price: {price:C}, Quantity: {quantity}, Total: {price * quantity:C}");
Console.WriteLine($"|{price,10:C}|");
int hex = 255;
Console.WriteLine($"Hexadecimal: {hex:X4}");
▶ جرّب الكود
TEXT 📖 للعرض فقط
Unit price: ¤29.90, Quantity: 3, Total: ¤89.70
|    ¤29.90|
Hexadecimal: 00FF

11. أفضل الممارسات في التنسيق

▶ مثال

CSHARP
string[] names = { "Apple", "Banana", "Orange" };
double[] prices = { 5.5, 3.2, 4.8 };
int[] stocks = { 120, 85, 200 };

Console.WriteLine($"{"Item",8}{"Price",8:C}{"Stock",8}");
Console.WriteLine(new string('-', 24));
for (int i = 0; i < names.Length; i++)
{
    Console.WriteLine($"{names[i],8}{prices[i],8:F2}{stocks[i],8}");
}

Console.WriteLine("\nEnter quantity to purchase:");
if (int.TryParse(Console.ReadLine(), out int qty) && qty > 0)
{
    double total = prices[0] * qty;
    Console.WriteLine($"Total: {total:C}");
}
else
{
    Console.WriteLine("Invalid input, please enter a positive integer");
}
▶ جرّب الكود
TEXT 📖 للعرض فقط
    Item    Price   Stock
------------------------
   Apple     5.50     120
  Banana     3.20      85
  Orange     4.80     200

Enter quantity to purchase:
5
Total: ¤27.50

❓ أسئلة شائعة

س ما الفرق بين int.Parse و int.TryParse؟
ج تُطلق Parse استثناءً في حالة الفشل، بينما تُرجع TryParse قيمة من نوع bool دون إطلاق استثناء. يُفضل استخدام TryParse.
س كيف يمكن عرض الأقواس الحرفية في عملية إدراج القيم في السلاسل؟
ج استخدم الأقواس المزدوجة للتفادي: {{ تُعرض على النحو التالي {، و}} تُعرض على النحو التالي }.
س متى تُرجع الدالة Console.ReadLine القيمة null؟
ج تُرجع القيمة null عندما يصل تيار الإدخال إلى نهايته، وهو ما نادرًا ما يحدث في وحدة التحكم التفاعلية.
س لماذا يظهر رمز العملة على شكل ¤؟
ج ¤ هو رمز العملة الثابت عبر الثقافات. سيؤدي ضبط الإعدادات الإقليمية للنظام أو تحديد معلومات الثقافة إلى عرض رمز العملة المناسب.

📖 ملخص

📝 تمارين

  1. اكتب برنامجًا يستخدم تقنية «إدراج القيم في السلاسل» لعرض بطاقة معلومات شخصية تتضمن الاسم والعمر والطول، مع محاذاة كل حقل على حدة
  2. اكتب آلة حاسبة بسيطة: تقرأ عددين صحيحين وعلامة عملية، وتُخرج النتيجة، وتستخدم TryParse لمعالجة المدخلات
  3. اكتب برنامجًا يعرض 5 منتجات في شكل جدول يتضمن الاسم، وسعر الوحدة (بتنسيق F2)، والمخزون، مع استخدام عرض عمود ثابت يبلغ 10
  4. اكتب برنامجًا يقرأ عددًا صحيحًا ويعرضه بالصيغة العشرية (D8)، والسداسية العشرية (X)، والنسبة المئوية (P)
  5. اكتب برنامجًا يستخدم Console.ReadKey لاختيار الخيارات من القائمة: اضغط على 1 لعرض الوقت، واضغط على 2 للخروج
Web-Tutorial.com

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

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

100%