问题标签 [using-statement]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
29 回答
300670 浏览

c# - C#中“使用”的用途是什么?

用户kokos通过提及关键字回答了精彩的 C# 隐藏功能问题。using你能详细说明一下吗?有什么用途using

0 投票
11 回答
31922 浏览

c# - C#“使用”语法

using 是捕获异常还是抛出异常?IE

如果流读取器抛出异常,它是通过使用捕获还是抛出以便调用函数可以处理它?

0 投票
9 回答
335490 浏览

c# - 什么是 C# Using 块,我为什么要使用它?

UsingC#中块的目的是什么?它与局部变量有何不同?

0 投票
16 回答
56173 浏览

c# - C# using 语句捕获错误

我只是在看 using 语句,我一直都知道它的作用,但直到现在还没有尝试使用它,我想出了以下代码:

这似乎可行,但是这有什么意义,因为据我所知,我仍然需要将其包含在 try catch 块中以捕获不可预见的错误,例如 sql server 关闭。我错过了什么吗?

据我目前所见,它只是阻止我关闭和处理 cmd,但由于仍然需要 try catch,所以会有更多的代码行。

0 投票
12 回答
9745 浏览

c# - 处理 .NET IDisposable 对象

using我在 C# 中工作,对于使用块来声明实现的对象,我一直很松懈IDisposable,显然你总是应该这样做。但是,我看不到一个简单的方法来知道我何时滑倒。Visual Studio 似乎没有以任何方式表明这一点(我只是错过了什么吗?)。我是不是应该每次声明任何东西时都检查一下帮助,并逐渐建立一个百科全书式的记忆,哪些对象是一次性的,哪些不是一次性的?似乎不必要、痛苦且容易出错。

怎么处理这个?

编辑:

查看相关问题侧边栏,我发现了另一个问题,它明确表示Dispose()无论如何应该由对象的终结器调用。因此,即使您从未自己调用它,它最终也应该会发生,这意味着如果您不使用它就不会发生内存泄漏using(我想这是我一直担心的问题)。唯一需要注意的是,垃圾收集器不知道对象作为非托管的东西持有多少额外的内存,因此它无法准确知道通过收集对象将释放多少内存。这将导致垃圾收集器的性能不如通常理想。

简而言之,如果我错过了一个using. 我只是希望某些东西至少会产生一个警告。

(题外话:为什么链接到另一个问题没有特殊的降价?)

编辑:

好吧,好吧,别吵了。这是超级骗子的全能戏剧花栗鼠级别,重要的是要打电话Dispose(),否则我们都会

现在。鉴于此,为什么这么容易——见鬼,为什么甚至允许——做错事?你必须不遗余力地做正确的事。像其他所有事情一样这样做会导致世界末日(显然)。封装这么多,是吧?

[离开,厌恶]

0 投票
15 回答
63189 浏览

c# - “使用”语句与“最终尝试”

我有一堆属性,我将在这些属性上使用读/写锁。我可以用一个try finally或一个using子句来实现它们。

在 .try finally之前我会获取锁try,并在finally. 在该using子句中,我将创建一个类,该类在其构造函数中获取锁,并在其 Dispose 方法中释放。

我在很多地方都使用读/写锁,所以我一直在寻找可能比try finally. 我很想听听一些关于为什么一种方法可能不被推荐的想法,或者为什么一种方法可能比另一种更好。

方法一(try finally):

方法二:

0 投票
5 回答
17811 浏览

.net - 什么是托管 C++ 等效于 C# using 语句

如何在托管 C++ 中编写以下 C# 代码

澄清: 对于托管对象。

0 投票
4 回答
5095 浏览

c# - 处理命令并直接在命令上定义连接时连接是否关闭?

我知道存在很多示例,其中定义了 SqlConnection,然后定义了 SqlCommand,两者都在 Using 块中:

我的问题:如果我直接在 SqlCommand 上定义连接,那么在释放命令时连接会关闭吗?

0 投票
4 回答
1398 浏览

c# - 有没有一种快速的方法来删除 C# 中的 using 语句?

有没有一种快速的方法来确定您是否在应用程序中使用某些命名空间。我想删除所有不必要的 using 语句,例如 using System.Reflection 等,但我需要一种方法来确定我是否正在使用这些库。我知道 Resharper 工具可以为您执行此操作,但是有没有一种快速、肮脏且免费的方法来执行此操作?

0 投票
3 回答
2010 浏览

c# - C# 网络编程和资源使用

我一直在研究如何最好地用 C# 编写“正确”的网络代码。

我已经看到了许多使用 C# 的“using”语句的示例,我认为这是一个很好的方法,但是我看到它在各种表达式中的使用不一致。

例如,假设我有一些这样的代码:

显然,这段代码将非常不稳定。所以,我看到了一些将 using 放在 tcpClient 上的代码,这看起来不错。但是,NetworkStream 不是也有需要清理的资源吗?StreamReader/Writer 呢?

我是否需要将所有 4 个语句包装在嵌套的 using 语句中?

如果是这样,到了处置的时候会发生什么?StreamWriter 不会关闭流并因此关闭套接字吗?那么当 StreamReader、NetworkStream 和 TcpClient 分别处理它们时会发生什么?

这就引出了另一个问题。StreamReader 和 StreamWriter 都由同一个流组成,谁拥有它?难道他们不都认为自己拥有它,因此都试图摧毁它吗?或者框架是否知道流已经被销毁并且只是默默地忽略它?

似乎 using 语句仅对链中的最后一条语句是必需的,但是如果在 GetStream() 中抛出异常会发生什么?我认为它不会正确清理套接字,因此似乎有必要使用多余的使用来确保不会发生这种情况。

有没有人知道任何关于使用 .net 进行网络编程的好书,最好是 c#,其中包括关于异常处理和资源管理的章节?或者网上有什么好文章?我能找到的所有书籍都来自 .NET 1.1 时代(Microsoft .NET Framework 的网络编程、.NET 中的网络编程等),所以这似乎是一个需要一些好的资源的主题。

编辑:

请不要让马克的非常好的评论阻止其他人对此发表评论:)

我想听听其他人关于资源管理的书籍推荐或意见,尤其是在异步使用方面。