الـ as
في C# هو (Casting Operator) يستخدم لتحويل كائن إلى نوع معين بشكل آمن.
بيختلف عن الـ Cs Type Casting، إذا لم يكن الكائن من النوع المطلوب، فإنه يُرجع null بدلاً من التسبب في استثناء (Exception).
هذا يجعل استخدامه أكثر أمانًا مقارنةً باستخدام التحويل التقليدي ((Type)
) الذي قد يسبب استثناءً إذا فشل التحويل.
الصيغة الأساسية:
object myObject = ...;
Type myVariable = myObject as Type;
- إذا كان
myObject
يمكن تحويله إلى النوعType
، فسيتم التحويل وتخزينه في المتغيرmyVariable
. - إذا لم يكن من الممكن التحويل، فإن
myVariable
سيأخذ قيمةnull
.
مثال بسيط:
object myObject = "Hello, World!";
string myString = myObject as string;
if (myString != null)
{
Console.WriteLine($"The string is: {myString}");
}
else
{
Console.WriteLine("The object is not a string.");
}
شرح المثال:
- هنا لدينا كائن
myObject
من النوعobject
ويحمل string. - نستخدم
as
لتحويل هذا الكائن إلىstring
. إذا كان الكائن بالفعل string، سيتم تخزينه في المتغيرmyString
. - إذا لم يكن التحويل ممكنًا (على سبيل المثال، إذا كان
myObject
يحمل نوعًا آخر مثلint
)، سيأخذmyString
قيمةnull
. - نتحقق بعد ذلك من قيمة
myString
للتأكد من نجاح التحويل.
مثال آخر:
object myObject = 123;
string myString = myObject as string;
if (myString == null)
{
Console.WriteLine("The object is not a string.");
}
في هذا المثال:
- الـ
myObject
يحمل قيمة عدد صحيحint
. - عند محاولة تحويله إلى
string
باستخدامas
، لن يتمكن من التحويل لأن الكائن ليس من النوعstring
. - وبالتالي، ستكون قيمة
myString
هيnull
، ويتم تنفيذ الكود داخل الجملة الشرطية.
مميزات استخدام as
:
- آمن: بدلاً من إطلاق استثناء عند فشل التحويل كما في التحويل التقليدي، يُرجع
null
، مما يسمح بمعالجة الفشل بشكل سلس. - أقل تكلفة: بدلاً من إجراء عملية فحص النوع مرتين (مرة باستخدام Cs is ثم التحويل)، يمكنك التحويل مباشرة باستخدام
as
، مما يحسن الأداء في بعض الحالات.
ملاحظة:
- مشغل
as
يعمل فقط مع الأنواع المرجعية (Reference Types) و الأنواع القابلة للتحويل ضمنيًا (nullable types). - لا يمكن استخدامه مع الأنواع البدائية (مثل
int
أوbool
).