在F#中编写此AWS C#代码段

时间:2017-03-19 18:57:55

标签: c# f# c#-to-f#

我是F#的新手,只是想知道如何在F#中编写下面的C#代码?

// Issue request and remember to dispose of the response
using (GetObjectResponse response = client.GetObject(request))
{
    using (StreamReader reader = new StreamReader(response.ResponseStream))
    {
        string contents = reader.ReadToEnd();
        Console.WriteLine("Object - " + response.Key);
        Console.WriteLine(" Version Id - " + response.VersionId);
        Console.WriteLine(" Contents - " + contents);
    }
}

我已经使用use阅读了文档并提出了这个问题:

    use response = s3Client.GetObject(req)
    (
      use reader = new StreamReader(response.ResponseStream)
      urlCheck = reader.ReadToEnd())
      Console.WriteLine(urlCheck)

但它根本不起作用。有人可以帮忙吗?

修改
我使用此链接:f# keyword use and using作为上述解决方案的模板,但它不起作用。

我得到的错误是“读者不是一个功能而且无法应用”。

另外,我知道我可以把它放在C#中,但是我想知道我是否可以把它移植到F#。对此有任何建议将非常感激。

1 个答案:

答案 0 :(得分:3)

F#中的use关键字与C#using的机制略有不同。一个主要的区别是在C#中你用花括号明确指定using的范围,但F#' s use影响整个"当前块" (let - 绑定或成员),从use到结尾。因此,您不必明确地“嵌套”#34; (即缩进)"在"下的代码use。继续照常写作:

use response = s3Client.GetObject(req)
use reader = new StreamReader(response.ResponseStream)
let urlCheck = reader.ReadToEnd()
Console.WriteLine(urlCheck)