问题标签 [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.
c# - 我怎么知道使用“使用”的最佳位置?
我对 c# 有点陌生,更习惯于脚本语言。我喜欢“使用”的想法,你实例化一个对象,然后只要你需要它就在它的范围内操作,然后当它完成它的目的时让它自行处理。
但是,这对我来说并不自然。当人们向我展示使用它的示例时,我认为它是完成这项工作的好工具,但我从来没有想过在我自己的编程中用它来解决问题。
我如何识别使用的好地方using
以及如何将它与 try-catch 块结合使用。它们是进入块内部,还是您通常想在 try 块中包含 using 语句?
c# - C#“使用”语句何时最有用?
因此,当退出 using 块时,using 语句会自动调用正在“使用”的对象上的 dispose 方法,对吗?
但是什么时候这是必要的/有益的?
例如,假设你有这个方法:
由于对象是在方法中创建的,因此是否需要在此处使用 using 语句?当方法退出时,Font 对象不会被丢弃吗?
或者 Dispose 方法是否在方法退出后的另一个时间运行?
例如,如果方法是这样的:
c# - 如何在班级内共享 IDisposable 资源?
我正在编写一些控制台应用程序来在 SQLite 数据库之间移动一些数据。连接的类和各种准备好的语句实现了 IDisposable,所以我使用using
块来实例化这些对象,如下所示:
但是,我需要能够在一种方法中创建这些连接,然后在其他方法中调用它们。对我来说,将这些连接存储为实例变量的最简洁、最容易混淆的方式是什么?我想确保.Dispose()
以一种智能的方式调用他们的方法,但看不到确保所有操作都发生在单个using
块的上下文中的好方法。
我意识到这是一个 C# 新手问题,所以请调整你的答案。如果您有建议的解决方案,如果您包含一个代码示例来说明,我会很高兴。
编辑:我的用例是一个控制台应用程序。有人传入源连接字符串和目标连接字符串,控制台应用程序执行操作。我真的会让我的控制台类程序本身像这样实现 IDisposable 吗?:
.net - 应该使用 USING 语句的案例列表
“File 和 Font 是访问非托管资源(在本例中为文件句柄和设备上下文)的托管类型的示例。还有许多其他类型的非托管资源和封装它们的类库类型。所有此类类型都必须实现 IDisposable 接口。如一条规则,当你使用 IDisposable 对象时,你应该在 using 语句中声明和实例化它。” - MSDN
是否存在应使用 USING 语句的此类情况的列表(访问非托管资源(如 FILE 和 FONT,...)的托管类型?
c# - C#:IEnumerator在 using 语句中
我很想知道该SingleOrFallback
方法是如何在MoreLinq中实现的,并发现了一些我以前从未见过的东西:
为什么IEnumerator<T>
在using
声明中?foreach
这也是在使用on an时应该考虑的事情IEnumerable<T>
吗?
附带问题:这种方法究竟做了什么?每当源序列不包含一个项目时,它是否返回后备项目?
c# - C# 退出 using() 块,线程仍在作用域对象上运行
如果线程正在运行通过退出 using 块而释放的对象中的方法,会发生什么情况?
例子:
obj.Work () 在一个新线程上运行,但obj是一个 IDisposable 对象,通常会在 using 块退出时被释放。如果在 using 块结束后线程继续运行会发生什么?只有在线程完成后才会释放对象吗?还是会断线?
谢谢。
c# - 是否有为 using 语句实现 IDisposable 的常见对象列表?
我想知道是否有某种备忘单,哪些对象与 using 语句相得益彰...... SQLConnection
,MemoryStream
等等。
更进一步,展示其他“拼图”会很棒,例如connection.Close()
在使用语句括号结束之前您应该如何实际调用。
有这样的东西存在吗?如果没有,也许我们应该做一个。
c# - 哪个更好,何时:在 C# 中的 IDisposable 上使用语句或调用 Dispose()?
假设我有以下内容:
为什么不直接执行以下操作并丢失几个花括号?:
感谢您的建议!
c# - 不好的做法?c# using 语句的非规范用法
C# 有using
语句,专门针对 IDisposable 对象。据推测,using
语句中指定的任何对象都将持有某种应该被确定性释放的资源。
然而,在我看来,编程中有许多设计都有一个单一的、明确的开始和结束,但缺乏内在的语言支持。该using
构造提供了使用代码编辑器的内置功能的机会,以至少清晰自然地突出此类设计或操作的范围。
我想到的是那种经常以BeginXXX()
andEndXXX()
方法开始的操作,尽管有很多不同的风格,例如涉及“开始”和“加入”的异步代码执行。
举这个天真的例子。
相反,如果 Start 方法返回一个对象,该对象的IDisposable.Dispose
方法执行连接操作。
或者,更好的是,我特别想到的是:我有一个执行高度专业化的图形 blitting 的对象,并且有一个Begin()
andEnd()
方法(DirectX 和 XNA 中也存在这种设计)。反而...
它似乎更自然和可读,但它是否不可取,因为它使用IDisposable
接口和using
语句用于非预期目的?换句话说,这是否与以非直观方式重载运算符相提并论?
c# - 为什么使用带有 SqlTransaction 的 using 语句?
我遇到了一些关于我在代码中使用的 SqlTransaction 的问题。在我的谷歌搜索过程中,我看到很多人使用带有 SqlTransaction 的 using 语句。
将这种类型的语句与 SqlTransaction 一起使用有什么好处和/或区别?
目前我的代码如下所示:
一种方式比另一种方式有什么优势?