それらが何であるかは理解していますが、いつ使用するのが最適なのか疑問に思っています。
私が最初に考えたのは、さまざまなデータ型に対して特定の操作を実行する必要がある (静的) ユーティリティ クラスを作成するときです。したがって、ジェネリック メソッドを使用して、特定のメソッドの多数のオーバーロードを回避することをお勧めします。これについてコメントしてください。
私は小さなサンプルクラスを持っています。これは、例のためだけです。
public static class Math<T> where T : operator +, operator -
{
public static T Add(T a1, T a2)
{
return a1+a2;
}
public static T Subtract(T a1, T a2)
{
return a1 - a2;
}
}
これはジェネリック クラスとメソッドの適切な使用法でしょうか。たとえば、最小量のコードで int、double などを加算および減算したいですか?
なぜこれはコンパイルされないのですか? クラス署名を変更するだけでなく、これを試しました:
public static class Math<T> where T : struct
Type パラメーターが参照型か値型かを指定する必要があることは理解しています。T を値型として制約する必要があることを指定することでそれを行いましたが、演算子 + および/または - を T に適用できないというエラーが引き続き発生するのはなぜですか (具体的には値型である必要があります)。