13

他のすべてはこのパターンに従っているようですが、私が試してみると:

public static ColumnOperation operator&&(ColumnOperation lhs, ColumnOperation rhs)
{
    return new ColumnBooleanOperation(lhs, rhs, ExpressionType.And);
}

「オーバーロード可能な二項演算子が必要です」というメッセージが表示されます。私は何が間違っているのですか?

4

4 に答える 4

18

条件付き論理演算子はオーバーロードできません。

ドキュメントによると:

条件付き論理演算子はオーバーロードできませんが、&および|を使用して評価されます。、オーバーロードすることができます。

この記事では、独自のカスタム&&および||を実装する方法について詳しく説明します。オペレーター。

于 2013-03-15T18:42:11.723 に答える
12

&&直接オーバーロードすることはできませんが、 false, trueand&演算子をオーバーロードできます -演算子 &&を参照してください

public static bool operator true(ColumnOperation x)
{
    ...
}

public static bool operator false(ColumnOperation x)
{
    ...
}

public static ColumnOperation operator &(ColumnOperation lhs, ColumnOperation rhs)
{
    return new ColumnBooleanOperation(lhs, rhs, ExpressionType.And);
}
于 2013-03-15T18:42:22.663 に答える
7

演算子をオーバーロードできるMSDN ページを参照してください。

条件付き論理演算子はオーバーロードできませんが、オーバーロードできる & および | を使用して評価されます。

&&これはand||演算子を指します。

要するに、オーバーライドすると、それに伴い無料で&入手できます。&&

于 2013-03-15T18:43:26.233 に答える
4

これから:_

&&, || : 条件付き論理演算子はオーバーロードできませんが、オーバーロードできる & および | を使用して評価されます。

したがって、それをオーバーライドすることはできませんが、&orをオーバーライドすることはできます|

于 2013-03-15T18:43:35.937 に答える