次の方法で共有


式 (C# プログラミング ガイド)

式とは、1 つの値、オブジェクト、メソッド、または名前空間に評価できる、1 つ以上のオペランドと 0 個以上の演算子のシーケンスです。式には、リテラル値、メソッドの呼び出し、演算子とそのオペランド、または簡易名を含めることができます。簡易名には、変数、型のメンバー、メソッドのパラメーター、名前空間、または型の名前を指定できます。

式では、他の式をパラメーターとして使用する演算子や、他のメソッド呼び出しとなるパラメーターを持つメソッド呼び出しを使用できます。そのため、式には単純なものもあれば、非常に複雑なものもあります。次に式の例を 2 つ示します。

((x < 10) && ( x > 5)) || ((x > 20) && (x < 25)) 
System.Convert.ToInt32("35")

式の値

ステートメントやメソッド パラメーターなど、式が使用されるコンテキストの大部分では、式はなんらかの値に評価されることが期待されます。たとえば、x と y が整数である場合、式 x + y は数値に評価されます。式 new MyClass() は、MyClass オブジェクトの新しいインスタンスへの参照に評価されます。式 myClass.ToString() は、メソッドの戻り値の型である文字列に評価されます。ただし、名前空間名については、分類上は式として扱われますが、値には評価されないため、式の最終結果になることはありません。名前空間名は、メソッド パラメーターに渡すことはできません。また、新しい式で使用したり、変数に割り当てたりすることもできません。名前空間名は、より大きい式の部分式としてのみ使用できます。同じことが、型 (System.Type オブジェクトとは異なります)、メソッド グループ名 (特定のメソッドとは異なります)、およびイベント アクセサーである addremove にも当てはまります。

すべての値には、型が関連付けられています。たとえば、x と y が両方とも型 int の変数である場合、式 x + y の値も int として型指定されます。異なる型の変数に値が割り当てられた場合や、x と y の型が異なる場合は、型変換の規則が適用されます。このような変換の動作方法の詳細については、「キャストと型変換 (C# プログラミング ガイド)」を参照してください。

オーバーフロー

値の型の最大値よりも値が大きくなると、数式でオーバーフローが発生することがあります。詳細については、「Checked と Unchecked (C# リファレンス)」および「明示的な数値変換の一覧表 (C# リファレンス)」を参照してください。

演算子の優先順位と結合規則

式の評価方法は、結合規則と演算子の優先順位によって決まります。詳細については、「演算子 (C# プログラミング ガイド)」を参照してください。

代入式とメソッドの呼び出し式を除き、ほとんどの式はステートメントに埋め込む必要があります。詳細については、「ステートメント (C# プログラミング ガイド)」を参照してください。

リテラルと簡易名

式の中で最も単純なのがリテラルと簡易名の 2 つのタイプです。リテラルは、名前を持たない定数値です。たとえば、次のコード例の 5 と "Hello World" は共にリテラル値です。

// Expression statements.
int i = 5;
string s = "Hello World";

リテラルの詳細については、「型 (C# リファレンス)」を参照してください。

前の例の i と s は、どちらもローカル変数を識別する簡易名です。これらの変数を式で使用すると、変数名は、変数のメモリ位置に現在格納されている値に評価されます。これを次の例に示します。

int num = 5;
System.Console.WriteLine(num); // Output: 5
num = 6;
System.Console.WriteLine(num); // Output: 6            

呼び出し式

次のコード例では、DoWork の呼び出しが呼び出し式です。

DoWork();

メソッドの呼び出しでは、メソッドの名前 (上の例のような名前、または別の式の結果としての名前) を使用し、その後にかっことメソッド パラメーターを記述する必要があります。詳細については、「メソッド (C# プログラミング ガイド)」を参照してください。デリゲートの呼び出しでは、デリゲートの名前とメソッド パラメーターをかっこで囲んで使用します。詳細については、「デリゲート (C# プログラミング ガイド)」を参照してください。メソッドの呼び出しとデリゲートの呼び出しは、メソッドが値を返す場合、メソッドの戻り値に評価されます。void を返すメソッドは、式の値の代わりに使用できません。

クエリ式

一般的な式の規則と同じ規則がクエリ式に適用されます。詳細については、「LINQ クエリ式 (C# プログラミング ガイド)」を参照してください。

ラムダ式

ラムダ式は、名前がないが入力パラメーターおよび複数のステートメントを持つことができる "インライン メソッド" を表します。LINQ では、メソッドに引数を渡すために広く使用されています。ラムダ式は、使用されるコンテキストに応じて、デリゲートまたは式ツリーにコンパイルされます。詳細については、「ラムダ式 (C# プログラミング ガイド)」を参照してください。

式ツリー

式ツリーを使用すると、式をデータ構造体として表すことができます。クエリ式を、SQL データベースなどの他のコンテキストで意味を持つコードに変換するために、LINQ プロバイダーにより広く使用されています。詳細については、「式ツリー (C# および Visual Basic)」を参照してください。

解説

変数、オブジェクト プロパティ、またはオブジェクトのインデクサー アクセスが式によって識別されると、その項目の値が式の値として使用されます。C# の式は、式が最終的に必要な型に評価される限り、値やオブジェクトが必要とされる任意の位置に配置できます。

参考書籍の該当する章

Variables and Expressions 入力 Beginning Visual C# 2010

参照

関連項目

メソッド (C# プログラミング ガイド)

デリゲート (C# プログラミング ガイド)

演算子 (C# プログラミング ガイド)

型 (C# プログラミング ガイド)

概念

C# プログラミング ガイド

LINQ クエリ式 (C# プログラミング ガイド)