ุงู„ู€ as operator ููŠ C# ู‡ูˆ ูˆุงุญุฏ ู…ู† ุงู„ู€ Casting Operators ุงู„ู„ูŠ ุจู†ุณุชุฎุฏู…ู‡ุง ุนุดุงู† ู†ุญูˆู„ object ู„ู†ูˆุน ู…ุนูŠู† ุจุณ ุจุดูƒู„ ุขู…ู†.

ุงู„ูุฑู‚ ุงู„ุฌูˆู‡ุฑูŠ ุจูŠู†ู‡ ูˆุจูŠู† ุงู„ู€ Type Casting in CSharp ุงู„ุนุงุฏูŠ ู‡ูˆ ุฅู†ู‡ ู„ูˆ ูุดู„ ููŠ ุนู…ู„ูŠุฉ ุงู„ุชุญูˆูŠู„ุŒ ุจูŠุฑุฌุน null ุจุฏู„ ู…ุง ูŠุฑู…ูŠ Exception. ุฏู‡ ุจูŠุฎู„ูŠู‡ ุงุฎุชูŠุงุฑ ุขู…ู† ูˆู…ูุถู„ ููŠ ุญุงู„ุงุช ูƒุชูŠุฑ.

Basic Syntax

ุงู„ุตูŠุบุฉ ุงู„ุฃุณุงุณูŠุฉ ู„ุงุณุชุฎุฏุงู…ู‡ ุจุณูŠุทุฉ ุฌุฏู‹ุง:

object myObject = /* ... some object ... */;
TargetType myVariable = myObject as TargetType;
  • ู„ูˆ ุงู„ู€ myObject ูŠู†ูุน ูŠุชุญูˆู„ ู„ู„ู†ูˆุน TargetTypeุŒ ุงู„ู‚ูŠู…ุฉ ู‡ุชุชุฎุฒู† ููŠ ุงู„ู…ุชุบูŠุฑ myVariable.
  • ู„ูˆ ุงู„ุชุญูˆูŠู„ ู…ุณุชุญูŠู„ุŒ myVariable ู‡ูŠุงุฎุฏ ู‚ูŠู…ุฉ null.

How it Works: Examples

Successful Conversion Example

ู‡ู†ุง ู…ุซุงู„ ุจูŠูˆุถุญ ุญุงู„ุฉ ู†ุฌุงุญ ุงู„ุชุญูˆูŠู„:

object myObject = "Hello, World!";
string myString = myObject as string;
 
if (myString != null)
{
    // The conversion was successful
    Console.WriteLine($"The string is: {myString}");
}
else
{
    // The conversion failed
    Console.WriteLine("The object is not a string.");
}

ุงู„ุดุฑุญ

  • ููŠ ุงู„ูƒูˆุฏ ุฏู‡ุŒ ุนู†ุฏู†ุง myObject ุดุงูŠู„ ู‚ูŠู…ุฉ ู…ู† ู†ูˆุน string.
  • ุจู†ุณุชุฎุฏู… as ุนุดุงู† ู†ุญุงูˆู„ ู†ุญูˆู„ู‡ ู„ู…ุชุบูŠุฑ ู…ู† ู†ูˆุน string. ู„ุฅู† ุงู„ุชุญูˆูŠู„ ู…ู…ูƒู†ุŒ ุงู„ุนู…ู„ูŠุฉ ุจุชู†ุฌุญุŒ ูˆmyString ุจูŠุงุฎุฏ ุงู„ู‚ูŠู…ุฉ.
  • ุจุนุฏ ูƒุฏุฉุŒ ุจู†ุนู…ู„ check ุจุณูŠุท ุจุงุณุชุฎุฏุงู… if ุนุดุงู† ู†ุชุฃูƒุฏ ุฅู† myString ู…ุจู‚ุงุด null ู‚ุจู„ ู…ุง ู†ุณุชุฎุฏู…ู‡.

Failed Conversion Example

ูˆุฏู‡ ู…ุซุงู„ ุนู„ู‰ ุญุงู„ุฉ ูุดู„ ุงู„ุชุญูˆูŠู„:

object myObject = 123; // This object holds an integer
string myString = myObject as string;
 
if (myString == null)
{
    Console.WriteLine("The object is not a string, conversion failed.");
}

ุงู„ุดุฑุญ

  • ู‡ู†ุงุŒ ุงู„ู€ myObject ุจูŠุญู…ู„ ู‚ูŠู…ุฉ ู…ู† ู†ูˆุน int.
  • ู„ู…ุง ุจู†ุญุงูˆู„ ู†ุญูˆู„ู‡ ู„ู€ string ุจุงุณุชุฎุฏุงู… asุŒ ุงู„ุนู…ู„ูŠุฉ ุจุชูุดู„ ู„ุฅู† ุงู„ู†ูˆุนูŠู† ู…ุด ู…ุชูˆุงูู‚ูŠู† ู„ู„ุชุญูˆูŠู„ ุงู„ู…ุจุงุดุฑ ุฏู‡.
  • ูƒู†ุชูŠุฌุฉุŒ myString ุจูŠุงุฎุฏ ู‚ูŠู…ุฉ nullุŒ ูˆุงู„ูƒูˆุฏ ุงู„ู„ูŠ ุฌูˆู‡ ุงู„ู€ if ุจูŠุชู†ูุฐ.

Key Advantages of โ€˜asโ€™

  1. ุขู…ู† (Safe): ุฏูŠ ุฃูƒุจุฑ ู…ูŠุฒุฉ. ุจุฏู„ ู…ุง ูŠุฑู…ูŠ Exception ูˆูŠุนู…ู„ ู…ุดูƒู„ุฉ ูˆู‚ุช ุงู„ุชุดุบูŠู„ุŒ ุจูŠุฑุฌุน nullุŒ ูˆุฏู‡ ุจูŠุณู…ุญู„ูƒ ุชุชุนุงู…ู„ ู…ุน ูุดู„ ุงู„ุชุญูˆูŠู„ ุจุดูƒู„ ุณู„ุณ ูˆู…ู†ุธู… ููŠ ุงู„ูƒูˆุฏ ุจุชุงุนูƒ.

  2. ุฃู‚ู„ ุชูƒู„ูุฉ (Less Costly): ููŠ ุจุนุถ ุงู„ุญุงู„ุงุชุŒ ุจูŠูƒูˆู† ุฃุฏุงุคู‡ ุฃุญุณู†. ุจุฏู„ ู…ุง ุชุนู…ู„ ูุญุต ู„ู„ู†ูˆุน ู…ุฑุชูŠู† (ู…ุฑุฉ ุจุงุณุชุฎุฏุงู… Cs is ุนุดุงู† ุชุชุฃูƒุฏ ู…ู† ุงู„ู†ูˆุนุŒ ูˆุจุนุฏูŠู† ุชุนู…ู„ cast)ุŒ ุงู„ู€ as operator ุจูŠุนู…ู„ ุงู„ุงุชู†ูŠู† ููŠ ุฎุทูˆุฉ ูˆุงุญุฏุฉ.

Important Note

  • ุงู„ู€ as operator ุจูŠุดุชุบู„ ุจุณ ู…ุน ุงู„ู€ Reference Types (ุฒูŠ ุงู„ู€ classes) ูˆู…ุน ุงู„ู€ Nullable Value Types (ุฒูŠ int? ุฃูˆ bool?).
  • ู…ูŠู†ูุนุด ุชุณุชุฎุฏู…ู‡ ู…ุน ุงู„ู€ value types ุงู„ุนุงุฏูŠุฉ ุงู„ู„ูŠ ู…ุด ุจุชู‚ุจู„ null (ุฒูŠ int ุฃูˆ bool).