عملگر as برای انجام انواع خاصی از تبدیلات بین نوع های مرجع سازگار استفاده می شود. برای مثال:
class csrefKeywordsOperators { class Base { public override string ToString() { return "Base"; } } class Derived : Base { } class Program { static void Main() { Derived d = new Derived(); Base b = d as Base; if (b != null) { Console.WriteLine(b.ToString()); } } } }
ملاحظات:
عملگر as شبیه عمل قالب ریزی (cast) است. هرچند، اگر تبدیل امکان پذیر نباشد، as بجای بوجود آوردن استثنا، null را برگشت می دهد. به عبارت زیر توجه کنید:
expression as type
این عبارت با تعبیر زیر برابر است بجز اینکه expression فقط یکبار ارزیابی می شود.
expression is type ? (type)expression : (type)null
توجه داشته باشید که عملگر as فقط تبدیلات مرجع و تبدیلات بسته بندی (boxing) را انجام می دهد. عملگر as نمی تواند تبدیلات دیگری از جمله تبدیلات کاربر-تعریف، که بایستی با استفاده از عبارات قالبریزی انجام شود، را اجرا کند.
مثال
class ClassA { } class ClassB { } class MainClass { static void Main() { object[] objArray = new object[6]; objArray[0] = new ClassA(); objArray[1] = new ClassB(); objArray[2] = "hello"; objArray[3] = 123; objArray[4] = 123.4; objArray[5] = null; for (int i = 0; i < objArray.Length; ++i) { string s = objArray[i] as string; Console.Write("{0}:", i); if (s != null) { Console.WriteLine("'" + s + "'"); } else { Console.WriteLine("not a string"); } } } } /* Output: 0:not a string 1:not a string 2:'hello' 3:not a string 4:not a string 5:not a string */