问题标签 [using]

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 投票
12 回答
568 浏览

c# - 是否存在不依赖 IDisposable 的 Using 模式?

我想创建一个内部消息系统,可以告诉我调用某些代码的持续时间。我在考虑易于使用,使 SystemMessage 类实现 IDisposable。

我会在 SystemMessage 的构造函数期间设置一个时间戳,如果调用了 Dispose,我可以计算出持续时间。

问题是我不想让对象 GC'ed。我希望它作为 MessageCollection 的一部分保留。

C# 中是否有另一个构造可以让我使用 Using 语句的可用性,而无需踩到 IDisposable 的预期功能。

0 投票
1 回答
1207 浏览

asp.net - 如何从网络应用程序验证到谷歌帐户服务以使用谷歌数据

有人可以告诉我如何使用用户名和密码通过网络应用程序访问谷歌服务,例如谷歌阅读器中的用户提要项目。我不希望用户进行身份验证。我想要 ASP.net 中的解决方案。

http://dalelane.co.uk/blog/?p=303上已经有一个 Python 可用的解决方案

但是我不知道python。

0 投票
3 回答
1285 浏览

sql - SQL Server 相当于 MySQL 的 USING

在 MySQL 中,当您连接来自不同表的具有相同名称的列时,您可以在连接中使用关键字 USING。例如,这些查询产生相同的结果:

SQL Server 中是否有等效的快捷方式?

0 投票
5 回答
1033 浏览

c# - 将代码重构为 using 语句

我有一个带有很多方法的 dal 层,它们都调用存储过程,一些返回列表(所以使用SqlDataReader),其他的只有一个特定的值。

我有一个辅助方法可以创建SqlCommand

现在我的平均(过度简化)方法体看起来像:

有没有办法重构它,这样我就不会失去我的辅助功能(它会做很多其他重复的工作),而且还能使用using

0 投票
8 回答
42867 浏览

c# - Stream.Dispose 是否总是调用 Stream.Close(和 Stream.Flush)

如果我有以下情况:

MySW.Dispose()即使提供了关闭,我也可以直接调用并跳过关闭吗?是否有任何不能按预期工作的流实现(如 CryptoStream)?

如果不是,那么以下只是错误的代码:

0 投票
12 回答
105188 浏览

datatable - 我应该 Dispose() DataSet 和 DataTable 吗?

DataSet 和 DataTable 都实现了 IDisposable,因此,按照常规的最佳实践,我应该调用它们的 Dispose() 方法。

但是,从我目前所读到的内容来看,DataSet 和 DataTable 实际上没有任何非托管资源,因此 Dispose() 实际上并没有做太多事情。

另外,我不能只使用using(DataSet myDataSet...),因为 DataSet 有一个 DataTables 集合。

因此,为了安全起见,我需要遍历 myDataSet.Tables,处理每个 DataTable,然后处理 DataSet。

那么,在我的所有数据集和数据表上调用 Dispose() 是否值得?

附录:

对于那些认为应该处置 DataSet 的人:通常,处置模式是使用usingor try..finally,因为您想保证 Dispose() 将被调用。

然而,这对于一个集合来说变得非常难看。例如,如果对 Dispose() 的调用之一引发异常,您会怎么做?你吞下它(这是“坏的”),以便你可以继续处理下一个元素吗?

或者,您是否建议我只调用 myDataSet.Dispose(),而忘记在 myDataSet.Tables 中处理 DataTables?

0 投票
1 回答
1597 浏览

c# - IDisposable 如何在 .Net 1.1 中的 FileStream 上实现

这似乎是一个点头的问题,但我正在看这个,因为我听到有人声称你必须在 FileStream 上调用 Close(),即使它在 using 块中(并且他们有调用 Close() 的代码就在街区的尽头)。

我知道 Close() 是为了调用 Dispose(),但我想我会看得更深,因为这是 .Net 1.1 代码,而且我的大部分经验都是在 2.0 上进行的。

让我印象深刻的一件事是,FileStream 的 MSDN 文档具有适用于 .Net 2.0 的 Dispose() 和 Dispose(bool),但只有适用于 .Net 1.1 的 Dispose(bool)。

我认为这可能是一个疏忽,所以我使用 Reflector 来查看一个程序集——在那里,我也看到了 Dispose(bool),但没有看到 Dispose()。

它是否正确?如果是这样,这里的故事是什么?FileStream 在 using 块中工作——我认为这意味着它必须实现 IDisposable,据我所知,它只声明了 Dispose()。

是否发生了一些编译器魔术,或者我在某处缺少 Dispose() 的隐藏实现(大概调用 Dispose(true) 或 Dispose(false) ?)

最后(没有双关语),您能否确认在 using 块中确定 FileStream 的范围将在 .Net 1.1 的范围退出时关闭流?

[编辑]

澄清一下,这是 C# 代码。我知道 VB.Net 直到 .Net 2.0 才得到 using 语句,但我的理解是 C# 在 1.1 中有它(我的 1.1 代码有它并编译)

0 投票
5 回答
3612 浏览

c# - 使用语句扩展的好奇 C#

我已经运行 ildasm 来发现:

生成与此等效的 IL 代码:

问题是为什么它会在finally中检查null?finally 块只有在 try 块被执行时才会被执行,而 try 块只有在 Simple 构造函数成功(即不抛出异常)时才会被执行,在这种情况下 simp 将是非空的。(如果有人担心在 Simple 构造函数和 try 块的开头之间可能会出现一些干预步骤,那么这确实是一个问题,因为可能会引发异常,从而完全阻止 finally 块的执行。)那么,到底为什么?

抛开(请)使用语句是否比 try-finally 更好的论点,我将 try-finally 块编写为:

0 投票
4 回答
9345 浏览

c# - 在“使用”语句中使用各种类型 (C#)

既然 C#using语句只是 try/finally{dispose} 的语法糖,为什么它只接受多个对象的类型相同

我不明白,因为他们只需要 IDisposable。如果他们都实现 IDisposable 应该没问题,但事实并非如此。

具体来说,我习惯写作

我压缩成:

我想进一步压缩成:

但我不能。我可能,有人会说,写:

因为我需要处理的只是连接而不是命令,但除此之外。

0 投票
7 回答
10447 浏览

c# - 这个 C#“使用”指令是什么?

我在代码示例中看到了这个 C# using 语句:

那是怎么回事?