加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – System.Drawing.Point是一个值类型.为什么?

发布时间:2020-12-16 00:12:20 所属栏目:百科 来源:网络整理
导读:我读到System.Drawing.Point是一个值类型.我不明白.为什么? 解决方法 微软试图遵循这些规则,他们在MSDN中解释得很好,见 Choosing Between Classes and Structures( The book更好,因为它有很多有趣的评论) 即使Point不是这样的好例子: Struct应逻辑上表示单
我读到System.Drawing.Point是一个值类型.我不明白.为什么?

解决方法

微软试图遵循这些规则,他们在MSDN中解释得很好,见 Choosing Between Classes and Structures( The book更好,因为它有很多有趣的评论)

即使Point不是这样的好例子:

> Struct应逻辑上表示单个值(在这种情况下是一个位置,即使它有2个组件,但复数也可以分为2个部分,它们是结构的主要候选者)
> Struct的实例大小应小于16个字节. (好的,2×4 = 8)
>不应经常将结构框装入. (好吧这个是对的)
>但是,结构应该是不可变的(这是他们不遵循自己的规则的部分,但我想微观优化获得了规则,无论如何都是后来写的)

正如我所说,我猜他们没有尊重“不可变”部分的事实是因为在编写System.Drawing时没有规则,因为图形操作可能对此非常敏感.

我不知道他们是否正确,也许他们测量了一些常见的算法,发现他们在分配临时对象和复制它们时失去了太多的性能.无论如何,只有在仔细测量类/结构的实际使用之后才能进行这种优化.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读