gpt4 book ai didi

c# "using"语句后跟 try 语句 在这种情况下可以省略括号吗?

转载 作者:太空狗 更新时间:2023-10-29 21:07:54 30 4
gpt4 key购买 nike

  using System.Net;       // (See Chapter 16)
...
string s = null;
using (WebClient wc = new WebClient()) // why there is no brackets after this using statement
try { s = wc.DownloadString ("http://www.albahari.com/nutshell/"); }
catch (WebException ex)
{
if (ex.Status == WebExceptionStatus.Timeout)

Console.WriteLine ("Timeout");
else
throw; // Can't handle other sorts of WebException, so rethrow
}

上面的代码是从 page 153 c# in a Nutshell 中复制的,我不明白为什么在 using 语句后缺少 { },这是书中的错字(不太可能)还是根本不需要?由于语法是 using 需要在 {} 内跟一个代码块。

我希望这段代码是:

  using System.Net;       // (See Chapter 16)
...
string s = null;
using (WebClient wc = new WebClient()) // why there is no brackets after this using statement
{
try { s = wc.DownloadString ("http://www.albahari.com/nutshell/"); }
catch (WebException ex)
{
if (ex.Status == WebExceptionStatus.Timeout)

Console.WriteLine ("Timeout");
else
throw; // Can't handle other sorts of WebException, so rethrow
}
}

最佳答案

如果您查看 C# Specificationusing 语句的语法,您会看到 using 语句后跟(或者更确切地说,它们的主体由)“embedded_statements”。

using_statement
: 'using' '(' resource_acquisition ')' embedded_statement
;

嵌入语句定义如下:

embedded_statement
: block
| empty_statement
| expression_statement
| selection_statement
| iteration_statement
| jump_statement
| try_statement
| checked_statement
| unchecked_statement
| lock_statement
| using_statement
| yield_statement
| embedded_statement_unsafe
;

所以是的,这不是错字。在 using (...) 之后,可以有任何在 embedded_statement 中定义的语句。无论如何,要查看这是否是拼写错误,您可以简单地尝试编译示例代码。

关于c# "using"语句后跟 try 语句 在这种情况下可以省略括号吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47799234/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com