7

ダミーコード:

public object Addition(object a, object b)
{
    var type = a.GetType();
    var op = type.GetMethod("op_Addition", BindingFlags.Static | BindingFlags.Public);
    return op.Invoke(null, new object[] { a, b });
}

このメソッドは、これらのメソッド(op_Addition)を見つけることができないint / float/doubleで文句を言います。

では、一般的な加算方法を構築するにはどうすればよいでしょうか。

4

1 に答える 1

8

はい、それらはそのようなメンバーとして存在するカスタム演算子ではありません-代わりに組み込みのIL命令があります。

(C#コンパイラがへの呼び出しを作成することを除いて、文字列の連結についてもほぼstring.Concat同じです。)

C#4と.NET 4を使用している場合、最も簡単なアプローチは動的型付けを使用することです。

public dynamic Addition(dynamic x, dynamic y)
{
    return x + y;
}

以前のバージョンでは、特定のタイプを特殊なケースにする必要があります:(

あなたの文脈が何であるかは明らかではありませんが、一般的な演算子に関するMarcGravellの記事は興味深いかもしれません。

于 2012-06-22T11:39:46.647 に答える