Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.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
用F编写AWS C#代码片段#_C#_F#_C# To F# - Fatal编程技术网

用F编写AWS C#代码片段#

用F编写AWS C#代码片段#,c#,f#,c#-to-f#,C#,F#,C# To F#,我是F的新手,只是想知道如何用F写下面的C代码 我使用use阅读了文档,并得出以下结论: use response=s3Client.GetObject(req) ( 使用阅读器=新的StreamReader(response.ResponseStream) urlCheck=reader.ReadToEnd()) Console.WriteLine(urlCheck) 但它根本不起作用。有人能帮忙吗 编辑 我使用这个链接:作为我上面解决方案的模板,但它不起作用 我得到的错误是“reader不

我是F的新手,只是想知道如何用F写下面的C代码

我使用
use
阅读了文档,并得出以下结论:

use response=s3Client.GetObject(req)
(
使用阅读器=新的StreamReader(response.ResponseStream)
urlCheck=reader.ReadToEnd())
Console.WriteLine(urlCheck)
但它根本不起作用。有人能帮忙吗

编辑
我使用这个链接:作为我上面解决方案的模板,但它不起作用

我得到的错误是“reader不是函数,无法应用”


另外,我知道我可以把它放在C#,但我想看看是否可以把它移植到F#。如果您对此有任何建议,我们将不胜感激。

F#中的
use
关键字与C#的
using
的机制略有不同。一个主要的区别是,在C中,您使用带有花括号的明确指定了
的范围,但F的
使用
会影响整个“当前块”(
绑定或成员),从
使用
到最后。因此,您不必显式地“嵌套”(即缩进)
使用
下的代码。像往常一样继续写:

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

混合语言没什么错,也许就把它放在C中吧,用“不工作”来描述你的问题通常是一种糟糕的方式——会发生什么?你有错误吗?(如果是,请告诉我们错误)。您是否得到了意外的响应(如果是,请描述期望和实际结果)我在上面进行了编辑。urlCheck=reader.ReadToEnd()的那一行,也许您的意思是“让urlCheck=…”,因为现在它变成了布尔测试。在F#中,我们几乎从不使用类似括号的缩进“use”。增益微乎其微,不值得牺牲可读性。嗨,Fyodor,非常感谢这一点-它解决了一些问题-然而,当我打印urlCheck的内容时-编码完全错误,我不太确定为什么。应该打印什么:{AmazonId2=ContentLength=1138630L;…}然而,我又得到了“胡言乱语”。这更像是一个AWS的东西还是一个F的东西?好吧,看看C的等价物,它似乎不需要任何其他特殊的编码,除了默认的编码-这就是奇怪的地方!长此以往:在C版本中,响应声明为GetObjectResponse。s3Client.GetObject(req)是否可能不返回编译时类型?我想也许response然后得到了错误的编译时类型,然后这又会影响下一行调用哪个response.ResponseStream。验证推断的响应类型是否确实为GetObjectResponse。您正在向控制台键入输出。这可能会阻止你在字符串中看到有趣的东西。至于编码,不要相信默认值与C#中的相同,所以请尝试显式设置其他编码。@BentTranberg尝试了您所说的一切-它是GetObjectResponse的一种类型。还尝试更改编码-只是不起作用!将有更多的游戏围绕它!谢谢你的帮助。
use response = s3Client.GetObject(req)
use reader = new StreamReader(response.ResponseStream)
let urlCheck = reader.ReadToEnd()
Console.WriteLine(urlCheck)