0
using System;
public class Program
{
public static void Main()
{
T<A> g = new T<A>();
T2 g = new T2();
}
}
public class T<A>
{
public static extern implicit operator T<A> (A v);
}
public class T2
{
public static extern implicit operator T2 (A v);
}
public interface A{}
Fiddle爲什麼用戶定義的轉換隻能在沒有泛型的情況下進行?
的代碼只爲T的作品A的帶T2它給出了錯誤「編譯錯誤(第19行,列26):T2.implicit operator T2(A)
:用戶定義的轉換或從接口不允許「,爲什麼它允許泛型?使用泛型作爲解決方法是否有任何限制?
這個問題不是this question的重複,因爲這個問題是問爲什麼它允許泛型,如果這個解決方法有任何限制,而不是爲什麼不允許用戶定義的轉換和從接口接口。
你在'Main'中根本沒有使用轉換 - 在你給出的代碼中什麼都不起作用?你的問題很不清楚......(這裏和'extern'有關嗎?如果不是這樣,我會刪除它......基本上,把這個降到最低限度的例子。) –
可能的重複[爲什麼不可能重複定義從接口到類的隱式轉換運算符?](https://stackoverflow.com/questions/12533748/why-isnt-it-possible-to-define-implicit-cast-operator-from-interface-to-class) –
外部不相關,但這樣我就不必定義一個函數體。 – trinalbadger587