C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#の「as」演算子とは?目的と基本的な使い方を解説

C#の「as」演算子は、互換性のある型同士の変換を行うための演算子です。キャスト(明示的な型変換)とよく似た動作をしますが、実行できる変換は次の3種類に限定されています。

  • 参照型の変換(参照変換)
  • null許容型への変換
  • ボックス化変換

ユーザー定義の変換など、上記以外の変換を「as」演算子で行うことはできません。そのような場合は、通常のキャスト式を使用する必要があります。

「as」演算子の特徴

「as」演算子の大きな利点は、変換が失敗した場合に例外をスローせず、nullを返すという点です。通常のキャストでは無効な変換を行うと InvalidCastException が発生しますが、「as」を使えばnullチェックだけで安全に処理を分岐できるため、コードがシンプルになります。

以下は、C#で「as」演算子を使ってobject型からstring型へ変換する例です。

string s = obj[i] as string;

使用例

次のコードを実行して、「as」演算子の実際の動作を確認してみましょう。この例では、object型の配列に格納された値が文字列かどうかを判定しています。

using System;
public class Demo {
    public static void Main() {
        object[] obj = new object[2];
        obj[0] = "jack";
        obj[1] = 32;
        for (int i = 0; i < obj.Length; ++i) {
            string s = obj[i] as string;
            Console.Write("{0}: ", i);
            if (s != null)
                Console.WriteLine("'" + s + "'");
            else
                Console.WriteLine("This is not a string!");
        }
        Console.ReadKey();
    }
}

実行結果

0: 'jack'
1: This is not a string!

このように、配列の要素0(文字列"jack")は正常にstring型へ変換されましたが、要素1(整数32)は文字列ではないため変換に失敗し、nullが返されています。結果として「This is not a string!」と表示される仕組みです。

まとめ

「as」演算子は、型の互換性がある場合に安全なダウンキャストを行いたい場面で非常に便利です。例外処理を書かずに済むため、可読性の高いコードを実現できます。ただし、値型への変換やユーザー定義変換には使えない点には注意しましょう。

  1. C#の演算子の優先順位とは?基本ルールとサンプルコードで解説

    演算子とは演算子(オペレーター)とは、コンパイラに対して特定の数学的処理や論理処理を実行するよう指示するための記号です。C#には、算術演算子・関係演算子・論理演算子など、さまざまな種類の演算子が用意されています。演算子の優先順位とは演算子の優先順位とは、1つの式の中で各項がどのようにグループ化され、どの順番で評価されるかを決めるルールです。この優先順位は式の評価結果に直接影響します。すべての演算子が同じ優先順位を持つわけではなく、たとえば乗算演算子(*)は加算演算子(+)よりも高い優先順位を持ちます。そのため、a + b * c という式は (a + b) * c ではなく a + (b *

  2. Pythonの&=演算子とは?ビット演算とインプレース代入の仕組みを解説

    &=演算子の正体:object.__iand__()メソッドPythonにおける &= 演算子は、object.__iand__() メソッドに対するシンタックスシュガー(糖衣構文)です。公式ドキュメントには以下のように記載されています。「これらのメソッドは、拡張代入演算子(+=、-=、*=、@=、/=、//=、%=、**=、<<=、>>=、&=、^=、|=)を実装するために呼び出されます。これらのメソッドは、可能な限りインプレース(self自身を直接変更する形)で操作を行い、その結果を返すことが求められます(返り値はselfである必要はありませ