as演算子は変数の型変換を行う演算子で、キャストとよく似ています。
キャストとの違いは、キャストが型変換に失敗した場合に例外を発生させるのに対して
as演算子は、例外を発生させず、変換先変数にnullを設定する点です。
また、as演算子はString型、配列、クラスなどの参照型にのみ使用可能です。
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
object obj1 = 15;
string str1;
Console.WriteLine("☆()演算子による型変換(キャスト)☆\n");
try
{
str1 = (string)obj1;
Console.WriteLine("str1=={0}", str1 == null ? "null" : str1);
}
catch (Exception e)
{
Console.WriteLine("例外が発生しました。(" + e.GetType() + ")");
Console.WriteLine(e.Message);
}
Console.WriteLine("\n---------------------------------------------------------\n");
Console.WriteLine("☆as演算子による型変換☆\n");
try
{
str1 = obj1 as string;
Console.WriteLine("str1=={0}", str1 == null ? "null" : str1);
}
catch (Exception e)
{
Console.WriteLine("例外が発生しました。(" + e.GetType() + ")");
Console.WriteLine(e.Message);
}
}
}
}
上のプログラムを実行すると以下のような結果となります。
☆()演算子による型変換(キャスト)☆
例外が発生しました。(System.InvalidCastException)
型 'System.Int32' のオブジェクトを型 'System.String' にキャストできません。
---------------------------------------------------------
☆as演算子による型変換☆
str1==null