###前提・実現したいこと
下記のコードで「あいまいなユーザー定義変換」というコンパイルエラーが出ます。
もちろん、int から TestClass<int> へキャストするメソッドが二つあるために競合が起きるのは当然なのですが、この二つに優先順位をつけて、どちらか一方が呼び出されるようにはできないでしょうか?
###該当のソースコード
public static class Program { public static void Main() { Console.WriteLine((TestClass<int>)1); } } class TestClass<T> { public TestClass(int value) { } public static explicit operator TestClass<T>(int value) { return new TestClass<T>(value); } public static explicit operator TestClass<T>(T value) { return new TestClass<T>(1); } }
###試したこと
(TestClass<double>)1 のようにすれば、競合は起きませんが、優先順位をつける方法があれば知りたく思います。
どちらか、あるいは両方を implicit にしても意味がありませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
Visual C# 2013
###追記
2016/6/23
リフレクションを使えばインスタンス化自体はできますが、手軽にキャストでインスタンス化したく思います。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/23 07:01
2016/06/23 08:08
2016/06/23 08:16
2016/06/23 08:17
退会済みユーザー
2016/06/23 08:48
2016/06/23 08:58
2016/06/23 09:08