Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 异步块内CookieCollection迭代中的编译错误_Visual Studio_F# - Fatal编程技术网

Visual studio 异步块内CookieCollection迭代中的编译错误

Visual studio 异步块内CookieCollection迭代中的编译错误,visual-studio,f#,Visual Studio,F#,我注意到在异步块内完成的CookieCollection的迭代过程中出现了一种奇怪的行为。基本上,编译器无法推断集合的类型 下面是错误的图像: 这是F#编译器/编辑器中的问题吗?正如错误所示,否不实现IEnumerable: httpWebResponse.Cookies中cookie的Seq.cast do ... 如错误所示,否不实现IEnumerable: httpWebResponse.Cookies中cookie的Seq.cast do ... 要使循环在异步块中工作,需要首先强制转

我注意到在异步块内完成的CookieCollection的迭代过程中出现了一种奇怪的行为。基本上,编译器无法推断集合的类型

下面是错误的图像:


这是F#编译器/编辑器中的问题吗?

正如错误所示,否不实现
IEnumerable

httpWebResponse.Cookies中cookie的
Seq.cast do
...

如错误所示,否不实现
IEnumerable

httpWebResponse.Cookies中cookie的
Seq.cast do
...

要使循环在异步块中工作,需要首先强制转换集合:

async {
    for c in httpWebResponse.Cookies |> Seq.cast<Cookie> do ()
}
原因是这两个构造不相同,尽管它们具有相同的语法

上面的一个是内置的for循环的“通用”循环,它可以处理不同类型的集合(使用IEnumerable接口,并附带一些注意事项,如§6.5.6序列迭代表达式中所述)。async块中的另一个是async builder的
For
方法,该方法被明确定义为使用
seq


所以不,这不是一个错误。这是async的内部结构

要使循环在异步块中工作,需要首先强制转换集合:

async {
    for c in httpWebResponse.Cookies |> Seq.cast<Cookie> do ()
}
原因是这两个构造不相同,尽管它们具有相同的语法

上面的一个是内置的for循环的“通用”循环,它可以处理不同类型的集合(使用IEnumerable接口,并附带一些注意事项,如§6.5.6序列迭代表达式中所述)。async块中的另一个是async builder的
For
方法,该方法被明确定义为使用
seq


所以不,这不是一个错误。这是async的内部结构

有关循环的内置
行为的解释,请参见§6.5.6循环的序列迭代表达式。基本上,如果
当前
属性具有返回类型
obj
,并且集合类型具有具有更具体(非对象)返回类型的
属性,则使用该属性。有关
循环的内置
行为的解释,请参见§6.5.6序列迭代表达式。基本上,如果
Current
属性具有返回类型
obj
,并且集合类型具有具有更特定(非对象)返回类型的
Item
属性,则使用该属性。
for c in httpWebResponse.Cookies do ()