2011-07-30 1 views
2

、ダブルC#では、int型、floatを追加する私はエラーを取得していますジェネリックメソッドは、私は、整数、浮動小数点数を追加するための汎用的な方法を書いています

public T Swap<T>(T value1, T value2) 
{ 
    T temp; 
    temp = value1 +value2; 
    return temp; 
} 

演算子「+ '' T 'と' T 'タイプのオペランドには適用できません

私はVS 2005を使用しています。

+3

できません。ジェネリック型を数値に制限する方法はありません。これは、この作業を行うために必要なものであるはずです。 –

+0

Monoは基本的な型のコンパイラをサポートしていますが、基本的な算術演算のためのインターフェースのようなことはしませんでしたか?マイクロソフトがリリースで素晴らしい追加機能を発揮することに気づくには、どれくらいの時間がかかるのだろうか。 –

答えて

6

これは直接行うことはできません。 .NETのGenericsはそれをサポートしていません。しかし、利用可能な他のオプションがあります:

public static T Sum<T>(T value1, T value2) 
{ 
    dynamic temp = value1; 
    temp += value2; 
    return temp; 
} 

EDIT:私はあなたがVS2005を使用していたことに気づいていなかった

  • は、C#4では、動的型付けを使用することができます。あなたは本当にを持っていますか?あなたはもう少し何かにアップグレードすることができますか?

  • Marc GravellはMiscUtilにコードを書いて、デリゲートでこれを非常に効率的に処理しました。詳細については、usage pageを参照してください。 MiscUtilの実装はC#3と.NET 3.5を使用していますが、私はを使用して.NET 2で同じ考えをの別の実装に実装していると思います。あなたがそれを必要とするかどうか確認するために彼にpingすることができます...

+1

私はあなたがVS2005でC#4をすることができないと思った。 – hatchet

+0

@hatchet:ガー、私は2005年のことを忘れてしまいました。編集します。 –

0

+演算子の適切な型にキャストすることができます。 Tがどのようなタイプであっても、それを実行する前にキャストしたいタイプであることを確認したいと考えています。

関連する問題