[英]How to constrain generic type of abstract class to interface of derived class?
[英]How were Unity developers able to constrain a generic type parameter on being derived from Object?
Unity 開發人員如何限制從 Object 派生的泛型類型參數?
在尋找問題的答案時,我遇到了這個問題。 有答案說明以下內容:
這兩個約束之間沒有區別,除了一個是不允許明確聲明的。
證明應該不可能約束對象。 在 Unity 中,我們可以看到以下方法:
public static T Instantiate<T>(T original, Vector3 position, Quaternion rotation) where T : Object;
這是因為 Unity 使用的是 Mono 而不是 CLR 嗎?
那是因為Object
約束不是System.Object
,而是UnityEngine.Object
,您正在查看的類。
例如...
//public class Object { }
public class MyClass<T> where T : Object { }
編譯失敗,報錯:
CS0702 約束不能是特殊類“對象”
...但是如果你取消注釋第一行就會成功。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.