The as operator is used to perform certain types of conversions between compatible reference types. "As" Operator is also known as a safe cast. What is does is it attempts to cast from one type to another and if the cast fails it returns null instead of throwing an InvalidCastException.
As-casting is equivalent to the following expression except that expression is evaluated only one time.
expression is type ? (type)expression : (type)nullExample
using System;
class Program
{
static void Main()
{
Object o = null;
// Prefix Casting
String s0 = (String)o; //throw exception InvalidCastException
//As Casting
String s1 = o as String; // return null , instead of throwing an InvalidCastException
}
}
class Program
{
static void Main()
{
Object o = null;
// Prefix Casting
String s0 = (String)o; //throw exception InvalidCastException
//As Casting
String s1 = o as String; // return null , instead of throwing an InvalidCastException
}
}
The as operator only performs reference conversions and boxing conversions. The as operator cannot perform other conversions, such as user-defined conversions, which should instead be performed by using cast expressions.
There are actually two separate IL instructions to handle the difference between As-casting and Prefix-casting. The Prefix-casting cast uses the castclass IL instruction and the As-casting cast uses the isinst instruction.
Difference between As-casting and Prefix-casting :
Prefix-casting versus as-casting in C#
Who's Afraid of the big-bad cast operator?
There are actually two separate IL instructions to handle the difference between As-casting and Prefix-casting. The Prefix-casting cast uses the castclass IL instruction and the As-casting cast uses the isinst instruction.
Difference between As-casting and Prefix-casting :
Prefix-casting versus as-casting in C#
Who's Afraid of the big-bad cast operator?
No comments:
Post a Comment