试图保持我的C#代码优化,我发现如果我有一个结构元素列表,每个插入将是一个完整的副本 – 我想避免的东西.
在C中我只会保留一个指针列表,所以我想知道我是否可以使用C#做同样的事情,也许将列表作为结构的引用列表.
不幸的是,结构不能变成一个类,因为它是XNA库的一部分(Vector3,Matrix等…)
无论如何 – 如果可能,格式和用法会如何?
谢谢.
解决方法
不,基本上.选项:
>使用课程(你已经说过你不能)
>盒子吧
>写一个包装它的类(基本上是手动装箱)
>使用数组,只能通过索引直接在数组中访问它(不需要复制到变量中);然后直接与数组中的项目对话(无副本)
作为最后一个例子;
if(arr[idx].X == 20) SomeMethod(ref arr[idx]);
.X和SomeMethod中的任何用法都是直接在数组中访问值,而不是副本.这仅适用于矢量(数组),而不是列表.
建立refs列表的一个原因是不可能的:它允许你在列表中存储堆栈中变量的地址;数组通常比堆栈上的变量更长,所以这将是非常不安全的