为什么当所有使用的类型都事先已知时,此代码片段会导致"Lookup on object of indeterminate type..."?



我在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]

f#编译器按照从上到下的方向读取文件,因此当必须确定y的类型时,编译器还不知道this.SelectedDrive的类型。这就是为什么你会得到这个错误

最新更新