|
3
|
| Bastien Vandamme · 技术社区 · 16 年前 |
|
|
1
9
微软试图遵循一些规则,它们在msdn中很好地解释了这些规则,请参见 Choosing Between Classes and Structures ( The book 更好,因为它有很多有趣的评论) 即使这一点不是一个很好的例子:
正如我所说,我猜他们不尊重“不变的”部分的事实,是因为在编写系统时没有规则。绘图和图形操作的速度可能对这一点非常敏感。 我不知道他们是否正确,也许他们测量了一些常见的算法,发现他们在分配临时对象和复制临时对象时损失了太多的性能。无论如何,只有在仔细测量类/struc的实际使用情况之后,才能进行此类优化。 |
|
|
2
2
这是一个 Structure . 就像日期时间。结构是价值类型。 |
|
|
3
2
这样做的原因几乎可以肯定,System.Drawing.Point(和PointF)类型用于通过.NET GDI(+)包装器进行绘制,这需要进行编组。整理值类型(即结构),以便本机库可以使用它们,比整理堆分配的对象(即类)要快。 从MSDN( Performance Considerations for Run-Time Technologies in the .NET Framework ):
|
|
|
4
0
嗯,我不知道微软的具体原因,但这是有道理的。它是一个固定大小的结构,包含少量不变的数据。我宁愿在堆栈上分配这样一个东西,在那里它易于分配和释放。把它变成一个类并放到堆中意味着它必须由GC管理,这会为这样一个微不足道的事情产生大量的开销。 |
|
|
5
0
在C,
|
|
|
A B · C#Excel自动调整列避免长文本时出错 11 月前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 11 月前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 11 月前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |