C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 35 を表示中)
■17818 / )  C#のジェネリックの制約について
□投稿者/ studyC# (1回)-(2008/05/02(Fri) 09:10:59)

分類:[C#] 

こんにちわ。初めて投稿します。
現在、C#(3.0)を勉強中です。よろしくお願いいたします。

C#のジェネリックについて質問があります。

例えば、次のような足し算や引き算を含むコードがあります。

class MyMath
{
    public MyMath()
    {

    }

    public int add(int x, int y)
    {
        return x + y;
    }

    public int minus(int x, int y)
    {
        return x - y;
    }
}

このコードだと、doubleの足し算や引き算をしたい場合には、add()やminus()をオーバーロードしなくてはいけなくなり面倒です。

そこで、ジェネリックを使い、

class MyMath<T>
{
    public MyMath()
    {

    }

    public T add(T x, T y)
    {
        return x + y;
    }

    public T minus(T x, T y)
    {
        return x - y;
    }
}

とすれば、うまくいくかと思いきや、T型は+や-ができるかわからないとコンパイラにはじかれました。
当然のことなのですが。。。

そこでwhereでTに対して+や-の演算ができるように制約をつけようと思っているのですが、制約に何を指定すればいいか探してみたのですがわかりませんでした。
そもそも、こういうことはできないのでしょうか><

わかる方がいらっしゃいましたら、ご助言いただけるとありがたいです。
すみませんが、よろしくお願いいたします。

返信 編集キー/


管理者用

- Child Tree -