Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#存储对列表的引用<;T>;_C#_List_Generics_Casting_Compiler Errors - Fatal编程技术网

C#存储对列表的引用<;T>;

C#存储对列表的引用<;T>;,c#,list,generics,casting,compiler-errors,C#,List,Generics,Casting,Compiler Errors,我有一个大的四叉树结构,由指向更多列表的通用列表(List)组成。这些列表包含在一个类中:TreeNode 在一个这样的树中,我存储类型为GameObject的对象 为了使树更新更快,我想在每个游戏对象上存储一个指向包含树节点的指针/引用,但是。。。我遇到了由TreeNode的泛型类型引起的问题 这里是我遇到问题的地方(在TreeNode类中): 我得到一个错误: Cannot implicitly convert type 'TreeNode<T>' to 'TreeNode<

我有一个大的四叉树结构,由指向更多列表的通用列表(
List
)组成。这些列表包含在一个类中:
TreeNode

在一个这样的树中,我存储类型为
GameObject
的对象

为了使树更新更快,我想在每个
游戏对象
上存储一个指向包含
树节点
的指针/引用,但是。。。我遇到了由
TreeNode
的泛型类型
引起的问题

这里是我遇到问题的地方(在
TreeNode
类中):

我得到一个错误:

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

如果您不知道
TreeNode
的类型,我建议您创建一个非泛型基类。然后,您可以简单地将引用存储在GameObject中

铸造 我会避免它,但您可以使用操作符
as
TreeNode
强制转换为
TreeNode
,如下所示:

public TreeNode<GameObject> treeNode;
gameObject.treeNode = this as TreeNode<GameObject>;
gameObject.treeNode=此为treeNode;

有点离题,但……上次我实现四叉树时,每个节点都位于大型阵列中。这大大加快了四叉树的速度。编辑:它是一个完全展开的四叉树。(更好的性能,更多的内存消耗)你能发布GameObject的代码或者至少是与treeNode属性相关的部分吗?Felix:谢谢,内存不应该是个问题,这样可以有所帮助。我想我可以在游戏对象上存储数组索引来指向它?那么node是游戏对象上的属性还是第一个代码片段中的treeNode?@Arachin您仍然可以使用直接引用。如果你愿意,你可以使用索引。完全扩展的四叉树的好处是移动、排序和访问游戏对象的速度。我没有找到原始源代码,但也许我以后会去寻找代码。是的,如果没有优雅的解决方案,那就是我的退路。重新编辑:我得到了同样的错误(
无法转换类型
无法隐式转换类型
)@Arachin Try
作为
或先将其转换为对象。太棒了,“as”工作得很好。我甚至不知道这个关键词,谢谢:)为了简单起见,我不确定你是否想重新发布答案
gameObject.treeNode=此为treeNode效果很好。@Arachin编辑了我的文章以使其更清晰,但保留了ppl可能面临相同问题的其他可能性。
gameObject.treeNode = this as TreeNode<GameObject>;