ماذا تعني علامتا الاستفهام في C#؟ (العامل ??)
مرحبًا أيها الزملاء! بدأت مؤخرًا في تعلم C# وصادفت بناءً غريبًا في كود شخص آخر. كان هناك شيء مثل:
```csharp
string name = userName ?? "ضيف";
```
أفهم أن `userName` متغير و`"ضيف"` نص. لكن ماذا تفعل علامتا الاستفهام المزدوجة (`??`)؟ هل هي عامل مقارنة؟ أم اختصار لـ `if-else`؟ حاولت البحث على الإنترنت لكني وجدت فقط شروحات عامة بالإنجليزية لم أفهمها تمامًا.
هل يمكنكم الشرح بكلمات بسيطة بالعربية، ويفضل مع أمثلة؟ متى يجب استخدام هذا؟ وهل هناك فرق بين `??` والعامل الثلاثي `?:`؟ شكرًا مقدمًا! أكتب تطبيق وحدة تحكم بسيط حيث أحتاج إلى الحصول على اسم المستخدم، وإذا لم يتم تحديده (null)، فإظهار "ضيف". هذا هو كودي الحالي الذي يبدو طويلًا جدًا:
```csharp
string userName = Console.ReadLine();
string name;
if (userName != null)
{
name = userName;
}
else
{
name = "ضيف";
}
```