C#中的匿名块[重复]

Posted

技术标签:

【中文标题】C#中的匿名块[重复]【英文标题】:Anonymous block in C# [duplicate] 【发布时间】:2020-03-13 11:47:05 【问题描述】:

我正在尝试理解下面的代码 - 下面的匿名块有什么用


    Console.WriteLine("Hello World2");

上面的代码在方法中可用 - 我是 c# 新手并试图理解它。

【问题讨论】:

如果某些代码被包裹在匿名块中,它的作用域会被块的括号所限制。 【参考方案1】:

在本例中使用:无。

使用匿名块:就像任何块一样,有自己的范围。

例如,此代码将无法编译,因为a 不在块外的范围内:


    var a = 2;
    Console.WriteLine(a);

Console.WriteLine(a);

您可以阅读更多信息here,虽然这稍微适用于 c/c++,但在 c# 中大部分适用。 here 也可以进行更存在主义的讨论。

【讨论】:

请注意,在 C# 8 中有一个指向匿名块的新点:当作用域结束时,通过 using declaration 在作用域内引入的任何可处置对象都将在作用域的末尾被释放。跨度> @MatthewWatson 真的很好,但我想知道你是否会像那样使用它们,为什么你不会只使用旧的 using(var x = new DisposibleThing()) ... 引入块的方法。 @Jamiec 缺乏知识。大多数时候我看到(尤其是在SO上)新手使用奇怪的结构,这是因为他们不知道更好。我也可能为此感到内疚。或者曾经。那不一定是人的错。就在上周,我看到一位老师毫无理由地让学生使用世界范围之外的代码。 是的,在这些情况下我总是会使用显式的“使用”块,但我认为值得指出。

以上是关于C#中的匿名块[重复]的主要内容,如果未能解决你的问题,请参考以下文章

C#中的lambda表达式

从 Oracle PL/SQL 匿名块填充 C# 数据表

C#中的匿名类型

Oracle 匿名块中的多个结果集

如何在 C# 中从 Npgsql 4.1.5.0 执行匿名块 PL/pgSQL (PostgreSQL 13)

如何检查 C# 中的动态匿名类型上是不是存在属性?