الـ is
في C# هو مشغل شرطي يستخدم للتحقق مما إذا كان كائن معين من نوع محدد. يقوم هذا المشغل بإرجاع قيمة true إذا كان الكائن المتحقق منه يتطابق مع النوع المحدد، و false إذا لم يكن كذلك.
العملية هترجع True في 3 حالات:
- لو هو object من نفس النوع أو من نفس الكلاس
- لو هو object من كلاس بيورث من الكلاس الأساسي
- لو هو بيساوي
null
الصيغة الأساسية:
if (object is Type)
{
// Code to execute if object is of the specified type
}
مثال بسيط:
object myObject = "Hello, World!";
if (myObject is string)
{
Console.WriteLine("The object is a string.");
}
else
{
Console.WriteLine("The object is not a string.");
}
شرح المثال:
- هنا لدينا كائن
myObject
يحمل قيمة نصية (“Hello, World!”). - نستخدم العبارة الشرطية
myObject is string
للتحقق مما إذا كان الكائن من النوعstring
. - بما أن الكائن هو بالفعل سلسلة نصية، سيتم طباعة
"The object is a string."
.
استخدام الـ is
مع النمط (Pattern Matching):
في الإصدارات الأحدث من C# (بدءًا من C# 7.0)، يمكن استخدام الـ is
مع النمط لتفادي القيام بعملية التحويل (casting) يدويًا:
// Before
object myObject = "Hello, World!";
if (myObject is string)
{
string str = (string) myObject; // Casting
}
// After
object myObject = "Hello, World!";
if (myObject is string myString)
{
Console.WriteLine($"The object is a string: {myString}");
}
شرح هذا المثال:
- هنا نتحقق من نوع الكائن، وإذا كان من النوع
string
، نقوم بتعريف متغير جديدmyString
ليحمل القيمة. - هذه الطريقة أكثر كفاءة لأنها تتحقق وتحول النوع في نفس الخطوة.
الاستخدامات:
- التحقق من الأنواع (type checking) أثناء وقت التشغيل (runtime).
- مفيد عند التعامل مع الأنواع العامة أو الأنواع الموروثة (inheritance).