【发布时间】:2017-07-05 12:09:13
【问题描述】:
我正在开发一个库,它在内部传递整数值,这些整数值不是真正的整数,而是方便的位容器。
为了我自己的理智,我宁愿这样做......
internal struct MyStruct
{
private readonly int myInt;
/* Constructor and get accessors. */
}
... 并传递 MyStruct 值而不是 int 值。这样我就可以使用我很好的 get 访问器,编译器会阻止我使用错误的类型。
我是否可以合理地确定这样做没有导致效率低下?感觉就像一旦编译器完成了它的工作,MyStruct 的所有使用都应该归结为一个简单的 int,就像 int 一样占用一个寄存器。
我的经验告诉我,单个成员结构确实可以按照我希望的方式编译,但我很难将其归结为除了直觉之外的任何东西。
【问题讨论】:
-
不太清楚为什么在这里需要一个结构,为什么不直接传递 int 呢?
-
@DavidG 键入安全且方便的获取访问器。 myvalue.Flarn 与 GetFlarn(myvalue)
-
好吧,通过查看它的编译版本(在发布版本中),我可以告诉你 Stuct 不会被编译掉......它仍然是一个带有 int 字段的结构.
-
@gregkalapos 你在看 CIL/MSIL 还是机器码?
-
您也可以使用扩展方法添加
get方法。
标签: c# optimization struct