F# ≥ C# (Record)

本文探讨了F#中的记录类型相较于C#的优势,特别强调了使用记录进行内容比较的便捷性,以及其在减少编码工作量方面的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

继续上一篇叙述Tuple和Swap的文章,现在我们继续探索:相比C#编程,如何轻松的使用F#来减少你的编码工作。

直到最近,我才开始注意到在F#中有一个叫做记录(Record)的类型,之前,我以为它类似于C#中的结构或者,但是,实际并非如此。

首先介绍下什么是记录:记录表示命名值的简单聚合,并可以选择包含成员。

我们先来看如下代码:

type myPointRecord = { X : float; Y::float }
let pointA = { X = 0; Y= 0 }
let pointB = { X = 0; Y = 0 }  

上面定义的两个point实际上是相同的,我们可以用如下简单而且直观的方式来证明:

let isEqual = pointA = pointB

使用Record最大的优势是你可以使用 "=" 操作符来进行内容的比较,我曾试图用 "==" 运算符来对C#定义的两个结构的内容进行比较,不过很可惜,失败了。这是C#中重写Equals和GetHashCode功能的选项,它让一个类能支持非引用类型的比较,但是它是一项很繁琐的工作,尤其当你需要试着让你所有的类都支持这种内容上的比较。

注:此文为译文,如有兴趣请查看blogspot中博主的原文:http://apollo13cn.blogspot.com/2011/11/f-c-record.html

转载于:https://www.cnblogs.com/Jennifer/archive/2012/11/08/2760757.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值