as (C# リファレンス)as (C# Reference)

as 演算子を使用して、互換性のある参照型または null 許容型間で特定の型変換を実行できます。You can use the as operator to perform certain types of conversions between compatible reference types or nullable types. 次のコードは一例を示しています。The following code shows an example.


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());
            }

        }
    }
}

コメントRemarks

as 演算子はキャスト演算と似ています。The as operator is like a cast operation. ただし、変換が可能でない場合、as は例外を発生させる代わりに null を返します。However, if the conversion isn't possible, as returns null instead of raising an exception. 次に例を示します。Consider the following example:

expression as type  

このコードは次の式と同等ですが、expression 変数は 1 回しか評価されません。The code is equivalent to the following expression except that the expression variable is evaluated only one time.

expression is type ? (type)expression : (type)null  

なお、as 演算子は、参照変換、null 許容変換またはボックス変換のみ実行します。Note that the as operator performs only reference conversions, nullable conversions, and boxing conversions. as 演算子は、ユーザー定義変換など、他の変換を実行できないため、ユーザー定義変換を実行するには、代わりにキャスト式を使用します。The as operator can't perform other conversions, such as user-defined conversions, which should instead be performed by using cast expressions.

Example

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
*/

C# 言語仕様C# Language Specification

詳細については、「C# 言語の仕様」を参照してください。For more information, see the C# Language Specification. 言語仕様は、C# の構文と使用法に関する信頼性のある情報源です。The language specification is the definitive source for C# syntax and usage.

参照See Also

C# リファレンスC# Reference
C# プログラミング ガイドC# Programming Guide
C# のキーワードC# Keywords
isis
?: 演算子?: Operator
演算子のキーワードOperator Keywords