当所有使用的类型先前已知时,为什么此代码段导致“查找不确定类型的对象...”?

时间:2014-08-17 04:31:02

标签: .net f# type-inference

我在VS2013上使用F#3.1。以下代码导致以下错误消息

基于此程序点之前的信息查找不确定类型的对象。在此程序点之前可能需要类型注释来约束对象的类型。这可以允许解析查找。 ”。

我无法弄清楚为什么会发生这种情况,因为这里使用的所有类型都是众所周知的(来自.Net框架本身)。有人可以让我光明吗?

open System.IO
open System.Collections.Generic

type A() as me =
    let drives = new List<DriveInfo>()

    let x = me.SelectedDrive
    let y = x.RootDirectory     // this causes "Lookup on object of indeterminate type..."

    member this.SelectedDrive with get() = drives.[0]

1 个答案:

答案 0 :(得分:3)

F#编译器从上到下读取文件,因此当必须确定y的类型时,编译器尚不知道this.SelectedDrive的类型。这就是您收到此错误的原因。