将结构引用添加到C#列表中

将结构引用添加到C#列表中,第1张

概述试图保持我的C#代码优化,我发现如果我有一个结构元素列表,每个插入将是一个完整的副本 – 我想避免的东西. 在C中我只会保留一个指针列表,所以我想知道我是否可以使用C#做同样的事情,也许将列表作为结构的引用列表. 不幸的是,结构不能变成一个类,因为它是XNA库的一部分(Vector3,Matrix等…) 无论如何 – 如果可能,格式和用法会如何? 谢谢. 不,基本上.选项: >使用课程(你已经说过 试图保持我的C#代码优化,我发现如果我有一个结构元素列表,每个插入将是一个完整的副本 – 我想避免的东西.

在C中我只会保留一个指针列表,所以我想知道我是否可以使用C#做同样的事情,也许将列表作为结构的引用列表.
不幸的是,结构不能变成一个类,因为它是XNA库的一部分(Vector3,Matrix等…)
无论如何 – 如果可能,格式和用法会如何?

谢谢.

解决方法 不,基本上.选项:

>使用课程(你已经说过你不能)
>盒子吧
>写一个包装它的类(基本上是手动装箱)
>使用数组,只能通过索引直接在数组中访问它(不需要复制到变量中);然后直接与数组中的项目对话(无副本)

作为最后一个例子;

if(arr[IDx].X == 20) SomeMethod(ref arr[IDx]);

.X和SomeMethod中的任何用法都是直接在数组中访问值,而不是副本.这仅适用于矢量(数组),而不是列表.

建立refs列表的一个原因是不可能的:它允许你在列表中存储堆栈中变量的地址;数组通常比堆栈上的变量更长,所以这将是非常不安全的

总结

以上是内存溢出为你收集整理的将结构引用添加到C#列表中全部内容,希望文章能够帮你解决将结构引用添加到C#列表中所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1262038.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存