在seq builder中枚举时,F#如何知道bitArray元素是bool?

在seq builder中枚举时,F#如何知道bitArray元素是bool?,f#,F#,位为bool类型。我使用ILSpy进行了检查,在生成的一个闭包中添加了一个显式强制转换 位数组仅实现普通(非泛型)IEnumerable。F#如何知道它是一个bool?,如果IEnumerable有一个项属性和一个非对象类型(突出显示我的类型),F#甚至对一个非泛型IEnumerable进行强制转换: 以下形式的表达式是序列迭代 表达方式: 对于expr1中的pat执行expr2完成 pat的类型与枚举数值上当前属性的返回类型相同。然而, 如果当前属性具有返回类型obj和收集类型ty 具有具有更

bool
类型。我使用ILSpy进行了检查,在生成的一个闭包中添加了一个显式强制转换

位数组
仅实现普通(非泛型)
IEnumerable
。F#如何知道它是一个
bool

,如果
IEnumerable
有一个
属性和一个非
对象
类型(突出显示我的类型),F#甚至对一个非泛型
IEnumerable
进行强制转换:

以下形式的表达式是序列迭代 表达方式:

对于expr1中的pat执行expr2完成

pat的类型与枚举数值上当前属性的返回类型相同。然而, 如果当前属性具有返回类型obj和收集类型ty 具有具有更具体(非对象)返回类型的属性 ty2,改为使用类型ty2,并将动态强制转换插入到 将v.Current转换为ty2

,我们看到它确实有一个类型为
bool
Item
属性:

    seq{
        for bit in BitArray(10) do 
        yield bit
    }

因此,在迭代时,F#将显式转换为
bool

这是我的猜测,但我在规范中找不到它。谢谢找到它。
public bool this[int index] {
        get {
            return Get(index);
        }
        set {
            Set(index,value);
        }
}