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