作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我需要将结构作为列表中的值类型传递。假设我有一个从接口(interface)派生的结构:
interface IFoo
{
...
}
struct Foo1 : IFoo { ... }
struct Foo2 : IFoo { ... }
//Some other class which contains this:
List<IFoo> listOfFoo;
我知道我是不是这样做的:IFoo foo = new Foo1()
,它会将值转换为引用(装箱)。
Foo1
,结构不会作为引用传递吗?或 Foo2
至 List<IFoo>
?List<object>
并且只添加这些结构,还是在类上执行 MemberwiseClone 会更好?我也在寻找效率,因为这将用于瓦片 map 中的碰撞检测。
最佳答案
结构将被装箱。他们为什么不呢? List<IFoo>
中的每个值必须是 IFoo
,因此您添加的每个结构实例都会通过装箱进行转换。
因为 object
结构仍然被装箱也是引用类型。在您的场景中,除非您将列表声明为特定值类型( List<Foo1>
或 List<Foo2>
),否则根本无法避免装箱。
一般来说,使用结构来“提高效率”根本不是一件简单或显而易见的事情。特别是,简单地插入 struct
你会在哪里写 class
不能保证使您的代码性能更好。首先以明显的方式编写您的代码(这里明显的意思是:使用类),然后确定(通过分析)是否需要优化它,如果需要,如何优化。
关于c# - 添加结构 : Interface to a List<Interface>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28483014/
我是一名优秀的程序员,十分优秀!