Egtraのプロフィール

@Egtra Egtra
ありがとう数1
質問数0
回答数1
ベストアンサー数
1
ベストアンサー率
100%
お礼率
0%

  • 登録日2012/07/03
  • C#のジェネリッククラス

     現在C#で座標クラス(XY座標を計算するクラス)を作ろうとしています. 座標クラスに用いるデータは二つの数字になる訳ですが,データの型に汎用性を持たせたいです.以前C++で作る場合は,テンプレートクラスを用いてすんなりとOKだったのですが,C#では勝手が違うようで少し困っています. //座標クラス class vertex<T>{ private T x, y; ~ } のような感じでクラスを作っていきたいのですが,このままだとC#の場合「x + y」や「x < y」のような基本的な演算子が使えなくなってしまいます.もちろん演算子を使わなくても同じような事が出来たらいいのですが...  一応自分で調べた結果,TにIComparableを実装の制限を加えれば比較は出来る事が分かりました.しかし,加算や減算を行うようにするのはどうすればいいのかまだ良く分かっていません.  x.Add(y)の様な形でも良いので,演算を可能にするようなジェネリクスクラス(メソッド)の作り方は無いでしょうか?もちろん演算子が使えるならなお嬉しいです(今まで調べた結果では難しそうに感じてますが...><).  また,Tの型を値のみに制限する方法は無いでしょうか?doubleやintやlongのみに制限したいのです.「where T : struct」はなんとなく意味が違うような...?あまりそこの所はまだよく理解はしていません.Javaだと「Numberクラスを継承しているクラス」とすれば簡単に制限できたのですが...C#はまだ初心者であまりよく理解できていないのが現状です>< よろしくお願いします. 一応参考までに... 【O S】Mac OS 10.7(最終的にはWindowsに実装予定) 【プログラミング歴】7年(C++ 3年, Java 4年, C# 6ヶ月)