在 C# 中,为了访问属性/方法,我可能会向下转换为一个类型,然后访问该属性:
Fruit f = new Banana();
((Banana)f).Peel();
F# 中的等价物是什么?我尝试了以下方法,但输入句点后的智能感知没有给出该Banana
类型的任何成员,所以我猜这是无效的。
let f = new Banana()
(f :?> Banana).Peel()
我知道我可以通过引入一个中间let
语句来做到这一点,但我想知道是否有一个衬里。
更新
好的,我试图举一个一般性的例子,但我想我的翻译中有些东西丢失了。我正在使用 Excel 互操作。无论如何,这里是更具体的代码。
(worksheet.Cells.[rowNumber, dateColumn] :?> Excel.Range).<member here>
但它看起来只是智能感知中的一个临时故障,因为今天(重新启动我的计算机后)它似乎工作正常。昨天它只是向我展示了 Equals, GetHashCode, GetType, and ToString
. 现在今天,同样的表达方式给了我Excel.Range
全班的所有成员。所以我看起来一切都按预期工作。