34

式ラムダとステートメントラムダに違いはありますか?

もしそうなら、違いは何ですか?

以下のリンクでこの質問を見つけましたが、答えを理解できませんでした。 Expression Lambda とは何ですか?

C# 面接の質問

そのリンクで言及されている答えはこれです 右側に式を持つラムダ式は、式ラムダと呼ばれます。

私の理解では、式は常に右側にのみあります。それが私がこの質問をしている理由です。私が知らないことはありますか?

4

4 に答える 4

53

これは確かに紛らわしい専門用語です。これ以上のものは思いつきませんでした。

ラムダ式は、次のいずれかの包括的な用語です。

x => M(x)
(x, y) => M(x, y)
(int x, int y) => M(x, y)
x => { return M(x); }
(x, y) => { return M(x, y); }
(int x, int y) => { return M(x, y); }

ラムダ演算子の右辺が式であるため、最初の 3 つは式ラムダです。ラムダ演算子の右側が block であるため、最後の 3 つはステートメントラムダです。

これは、左側に 3 つの可能な構文があることも示しています。単一のパラメーター名、型なしパラメーターの括弧付きリスト、または型付きパラメーターの括弧付きリストのいずれかです。

于 2013-06-21T17:10:43.753 に答える
18

はい、あります-または、おそらく一方が他方を定義していると言うべきです。

ラムダ式を使用すると、単純な無名関数を割り当てることができます。

式ラムダ 、ラムダ演算子の右側に式を持つラムダの一種です。

もう 1 つのタイプのラムダ式は、式の右側にステートメント ブロックが含まれているため、ステートメント ラムダです。{...}

  • 式ラムダは次の形式を取ります。number => (number % 2 == 0)
  • ステートメント lambda は次の形式を取ります。 number => { return number > 5 }
于 2013-06-21T17:04:11.863 に答える
1

lampda 式は無名関数で、コンパイラは aFunc<T>またはa に変換できますExpression<Func<T>>(使用法に応じてコンパイラによって推測されます)。

「式ラムバ」が何を意味するのか完全には明確ではありませんが、ポッドキャスト/ウェブキャストなどでこのフレーズを聞いたことがある場合は、ラムダ式を指している可能性があります。または、 Expression インスタンスからラムダを取得するために使用するプロパティExpression.Lambdaである可能性があります。

于 2013-06-21T17:07:43.493 に答える