Object在拆箱时会在栈空间生成一个临时变量。所以Struct在使用时尽量将内容都声明为readonly为好

[<Struct>]
type Point=
val mutable X:double
val mutable Y:double
member x.Change(a, b) =
x.X <- a
x.Y <- b
override x.ToString() =
sprintf "%A %A" x.X x.Y let mutable p = Point(X=., Y=.)
p.ToString()//out: 1.0 1.0
p.Change(., .)
p.ToString()//out: 3.0 2.0
let o = p :> obj
o.ToString()//out: 3.0 2.0
(o :?> Point).Change(., .)
o.ToString()//no change out: 3.0 2.0

f# 生成的struct实例默认是只读的 也就是说不加上mutable, Change压根就不起作用。保护的更好一些。

最新文章

  1. OSG 3D场景渲染编程概述
  2. BZOJ3438 小M的作物(最小割)
  3. 菜鸟初识python request属性及方法说明
  4. 重构Web Api程序(Api Controller和Entity)续篇
  5. ubutu之mysql emma中文乱码问题解决
  6. *BigDecimal初识
  7. 在Eclipse中设置Java类上面的注释(包含作者、日期等)
  8. /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15&#39; not found错误的解决
  9. 关于apple watch(苹果表)
  10. Android ActionBar 返回为NULL
  11. caffe 配置 札记
  12. How to solve java.net.SocketTimeoutException:60000millis problem in HDFS
  13. 阅读Facebook POP框架 笔记(一)
  14. python + Jquery,抓取西东网上的Java教程资源网址
  15. 20165311 预备作业3 Linux安装及学习
  16. js控制元素隐藏和显示
  17. java把13位时间戳转换成&quot;yyyy-MM-dd HH:mm:ss&quot;格式,工具类
  18. 人工智能之KNN算法
  19. Java如何创建用户自定义异常?
  20. sklearn包学习

热门文章

  1. 「BZOJ 1876」「SDOI 2009」SuperGCD「数论」
  2. docker概述及基础操作
  3. centos7 docker 安装 mysql5.7.24 导入12G的sql
  4. vue 路由导航白话全解析
  5. JAVA基础——Java 中必须了解的常用类
  6. 【Java】qatools.properties
  7. python之文件读写(1)
  8. rest-assured的对象映射(序列化和反序列化)
  9. ABP中文网入门篇教程中的一个bug
  10. PMP 变更的流程