Как разработчики Unity смогли ограничить типовой параметр c при получении из Object? - PullRequest
4 голосов
/ 05 марта 2020

Как разработчики Unity смогли ограничить универсальный параметр типа c производным от Object?

Когда я искал ответ на вопрос, я подошел к вопросу . Существует ответ, который говорит следующее:

Нет никакой разницы между этими двумя ограничениями, за исключением того, что это запрещено для явного заявления.

Доказательство что нельзя ограничивать объект. В Unity мы видим следующий метод:

public static T Instantiate<T>(T original, Vector3 position, Quaternion rotation) where T : Object;

enter image description here

Это происходит потому, что Unity использует Mono, но не CLR?

1 Ответ

6 голосов
/ 05 марта 2020

Это потому, что ограничение Object не System.Object, это UnityEngine.Object, класс, на который вы смотрите.

Например ...

//public class Object { }

public class MyClass<T> where T : Object { }

Не скомпилируется, с ошибкой:

CS0702 Ограничение не может быть специальным классом 'object'

… но будет успешно, если вы раскомментируете первую строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...