は、以下のジェネリックを考えてみましょう:C#ジェネリック型制約 - 型パラメータが同じにならないようにしますか?
class Foo<T, U> {}
は、同じ型であることから、TおよびUを防止することが可能ですか?この質問は好奇心から生まれたものです。
は、以下のジェネリックを考えてみましょう:C#ジェネリック型制約 - 型パラメータが同じにならないようにしますか?
class Foo<T, U> {}
は、同じ型であることから、TおよびUを防止することが可能ですか?この質問は好奇心から生まれたものです。
いいえ、そうではありません。あなたが持っている唯一のオプションはここに記載されていますConstraints on Type Parameters
http://msdn.microsoft.com/en-us/library/d5x73970%28v=vs.80%29.aspxは、6種類の制約があることを示しています。平等は含まれていません。
いいえ、そんなことはありません。しかし、テンプレートmetaprogramming(例えばD)を使って他の言語に目を向けたいと思うかもしれません - それらはgenericsのはるかに強力な、コンパイル時の変種です。
他の人から指摘されているように、型制約は使用できませんが、静的コンストラクタを使用してランタイムチェックを追加することはできます。 http://en.csharp-online.net/ECMA-334:_25.1.5_Static_constructors_in_generic_classes
大量の追加制約(例えば、T:class、U:struct、または異なる継承階層)を課している回答を探していないと仮定します: –
コンパイル時ではありません。しかし、明らかに例外を介して実行時にそれを行うことができます:) – digEmAll
それは思想的な実験です。 1つの答えで提案された静的コンストラクタは面白いです。 – Amy