C # хранить ссылку на список <T> - PullRequest
1 голос
/ 01 февраля 2012

У меня есть большая структура Quad Tree, составленная из общих списков (List<T>), указывающих на дополнительные списки и так далее.Эти списки содержатся в классе: TreeNode<T>

В одном таком дереве я храню объекты типа GameObject.

Чтобы ускорить обновление дерева, я хочу сохранить указатель/ ссылка на содержащий TreeNode на каждом GameObject, однако ... Я сталкиваюсь с проблемами, вызванными универсальным типом <T> для TreeNode.

Вот где у меня естьпроблема (внутри класса TreeNode):

contents.Add(typedObject);
if (typedObject is GameObject)
{
    GameObject gameObject = (GameObject) (object) typedObject;
    gameObject.treeNode = this;
}

Я получаю сообщение об ошибке:

Cannot implicitly convert type 'TreeNode<T>' to 'TreeNode<GameObject>'

Любая помощь или предложения будут с благодарностью.Спасибо.

Редактировать -> Узел сохраняется на GameObject следующим образом:

public TreeNode<GameObject> treeNode;

1 Ответ

2 голосов
/ 01 февраля 2012

Если вы не знаете тип TreeNode<T>, я бы предложил создать неуниверсальный базовый класс. Тогда вы можете просто сохранить ссылку в GameObject.

литье

Я бы этого избегал, но вы можете разыграть TreeNode<T> до TreeNode<GameObject>, используя оператор as следующим образом:

gameObject.treeNode = this as TreeNode<GameObject>;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...