Questions tagged «using-statement»

“ using”语句是C#和VB.NET语言的功能,它简化了对一次性资源的确定性清除。不要与(仅C#)“ using”指令(与名称空间有关)混淆,该指令使用标签“ using-directives”。



9
尝试/捕获+使用正确的语法
哪一个: using (var myObject = new MyClass()) { try { // something here... } catch(Exception ex) { // Handle exception } } 要么 try { using (var myObject = new MyClass()) { // something here... } } catch(Exception ex) { // Handle exception }



5
“使用”多个资源是否会导致资源泄漏?
C#让我执行以下操作(来自MSDN的示例): using (Font font3 = new Font("Arial", 10.0f), font4 = new Font("Arial", 10.0f)) { // Use font3 and font4. } 如果font4 = new Font抛出会怎样?据我了解,font3将泄漏资源,并且不会被丢弃。 这是真的?(不会处理font4) 这是否using(... , ...)应该完全避免使用嵌套使用?

3
当在using语句内引发异常时,Dispose是否仍会被调用?
在下面的示例中,如果在using语句内引发异常,连接是否会关闭并释放? using (var conn = new SqlConnection("...")) { conn.Open(); // stuff happens here and exception is thrown... } 我知道下面的这段代码将确保它能够做到,但是我很好奇using语句如何做到这一点。 var conn; try { conn = new SqlConnection("..."); conn.Open(); // stuff happens here and exception is thrown... } // catch it or let it bubble up finally { conn.Dispose(); } 有关: …

1
使用语句并等待关键字在C#中发挥很好
我遇到一种情况,我正在async调用返回和IDisposable实例的方法。例如: HttpResponseMessage response = await httpClient.GetAsync(new Uri("http://www.google.com")); 现在async,在现场之前,使用IDisposable实例时,使用“ response”变量的此调用和代码将包装在using语句中。 我的问题是,当async关键字混入时,这是否仍然是正确的方法?即使代码可以编译,在下面的两个示例中,using语句仍可以按预期工作吗? 例子1 using(HttpResponseMessage response = await httpClient.GetAsync(new Uri("http://www.google.com"))) { // Do something with the response return true; } 例子2 using(HttpResponseMessage response = await httpClient.GetAsync(new Uri("http://www.google.com"))) { await this.responseLogger.LogResponseAsync(response); return true; }

3
如果发生错误,using语句会回滚数据库事务吗?
我在using语句中有一个IDbTransaction,但不确定在using语句中引发异常时是否会回滚它。我知道using语句将强制调用Dispose()...但是有人知道Rollback()是否也是如此吗? 更新:另外,我是否需要像下面一样显式调用Commit(),还是使用using语句来处理? 我的代码看起来像这样: using Microsoft.Practices.EnterpriseLibrary.Data; ... using(IDbConnection connection = DatabaseInstance.CreateConnection()) { connection.Open(); using(IDbTransaction transaction = connection.BeginTransaction()) { //Attempt to do stuff in the database //potentially throw an exception transaction.Commit(); } }

15
“使用”语句与“最终尝试”
我有一堆将要使用读/写锁的属性。我可以使用atry finally或using子句实现它们。 在中,try finally我将在之前获取锁,然后在中try释放finally。在该using子句中,我将创建一个在其构造函数中获取锁并在其Dispose方法中释放该锁的类。 我在许多地方都使用了读/写锁,因此我一直在寻找比更为简洁的方法try finally。我很想听听一些关于为什么可能不推荐一种方法,或者为什么一种方法可能比另一种更好的想法。 方法1(try finally): static ReaderWriterLock rwlMyLock_m = new ReaderWriterLock(); private DateTime dtMyDateTime_m public DateTime MyDateTime { get { rwlMyLock_m .AcquireReaderLock(0); try { return dtMyDateTime_m } finally { rwlMyLock_m .ReleaseReaderLock(); } } set { rwlMyLock_m .AcquireWriterLock(0); try { dtMyDateTime_m = value; } finally { rwlMyLock_m .ReleaseWriterLock(); …

3
如何使用迭代器?
我正在尝试计算两点之间的距离。我在C ++中将两个点存储在向量中:(0,0)和(1,1)。 我应该得到结果 0 1.4 1.4 0 但是我得到的实际结果是 0 1 -1 0 我认为在向量中使用迭代器的方式存在问题。我该如何解决这个问题? 我在下面发布了代码。 typedef struct point { float x; float y; } point; float distance(point *p1, point *p2) { return sqrt((p1->x - p2->x)*(p1->x - p2->x) + (p1->y - p2->y)*(p1->y - p2->y)); } int main() { vector <point> po; point …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.