c# – 将公共只读字段用于不可变结构而不是私有字段/公共getter对
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 将公共只读字段用于不可变结构而不是私有字段/公共getter对,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1317字,纯文字阅读大概需要2分钟。
内容图文
![c# – 将公共只读字段用于不可变结构而不是私有字段/公共getter对](/upload/InfoBanner/zyjiaocheng/762/add55fc2523b44a0b660f151e02a8c5e.jpg)
这是我第一次编写将用于广泛几何计算的小型不可变结构.我很想使用公共只读字段而不是私有字段/公共getter组合.
public struct Vector4
{
public readonly float Angle, Velocity;
// As opposed to:
private float _Angle, _Velocity;
public float Angle { get { return (this._Angle); } }
public float Velocity { get { return (this._Velocity); } }
public Vector4 (float angle, float velocity)
{
// Once set in the constructor, instance values will never change.
this.Angle = angle;
this.Velocity = velocity;
}
}
它看起来更清洁,并消除了额外的层(吸气剂).如果不使用公共字段是不好的做法,那么以这种方式使用公共只读字段是否有任何负面影响?
请注意,我们只讨论价值类型.例如,数组会通过调用代码来覆盖要覆盖的元素.
更新:
感谢所有的投入.对于没有使用数据绑定等的情况,使用公共只读字段似乎没有任何缺点.在我的基准测试中,执行时间下降了70%,这是一个大问题.针对.NET 4,我原本期望编译器内联getter-only属性.基准测试当然是在发布配置中测试的,没有附加调试器.
解决方法:
在没有反射的纯C#中,几乎没有理由避免在你的情况下使用只读字段,我可能会自己选择只读字段.属性的大多数一般优点在这里并不真正适用.那说……
任何使用反射来获取属性列表并对这些属性起作用的东西都不能在没有修改的情况下使用字段(无论是否为只读).
特别是,将属性更改为字段可能会导致数据绑定停止工作.它将继续编译而没有任何问题,但它将不再按照您的意愿执行.如果您有任何此类代码,或者您预计将来会使用此类代码,则需要继续使用属性.
内容总结
以上是互联网集市为您收集整理的c# – 将公共只读字段用于不可变结构而不是私有字段/公共getter对全部内容,希望文章能够帮你解决c# – 将公共只读字段用于不可变结构而不是私有字段/公共getter对所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。