javascript

java

python

c#

node.js

reactjs

android

php

c++

html

jquery

ruby-on-rails

css

git

ios

.net

sql

c

string

<img src="//i.stack.imgur.com/bk9VA.png" alt="" class="sponsor-tag-img" width="18" height="16"/>android

c# - 当在using语句中抛出异常时,是否仍会调用Dispose?

在下面的示例中,如果在using语句中引发异常,则连接是否会关闭并处理?

using (var conn = new SqlConnection("..."))
{
    conn.Open();
    // stuff happens here and exception is thrown...
}

我知道下面这段代码会确保它确实如此,但我很好奇使用声明是如何做到的。

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();
}

有关:

抛出异常时,确保SQL连接关闭的正确方法是什么?

trans by 2019-09-11T10:41:01Z

异步 - 使用语句和等待关键字在c#中很好地发挥作用

我有一种情况,我正在对一个返回的方法和IDisposable实例进行async调用。 例如:

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;
}
trans by 2019-09-10T15:19:05Z

hibernate - Java有使用声明吗?

Java是否有一个在hibernate中打开会话时可以使用的using语句?

在C#中它是这样的:

using (var session = new Session())
{


}

因此,对象超出范围并自动关闭。

trans by 2019-08-19T07:44:19Z

c# - 如果我在使用语句结束之前返回会发生什么? 处理是否会被召唤?

我有以下代码

using(MemoryStream ms = new MemoryStream())
{
     //code
     return 0;
}

dispose()方法在using语句的末尾调用}对吗? 由于我在using语句结束前return,是否将MemoryStream对象妥善处理? 这里发生了什么?

trans by 2019-07-24T02:11:00Z

c# - 可以“使用”多个资源导致资源泄漏吗?

C#允许我执行以下操作(来自MSDN的示例):

using (Font font3 = new Font("Arial", 10.0f),
            font4 = new Font("Arial", 10.0f))
{
    // Use font3 and font4.
}

如果using(... , ...)抛出怎么办? 从我的理解,font3将泄漏资源,不会被处置。

  • 这是真的? (font4不会被处理掉)
  • 这是否意味着应该完全避免使用嵌套使用using(... , ...)
trans by 2019-07-13T01:20:15Z

c# - 如果发生错误,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();
    }
}
trans by 2019-05-23T17:37:37Z

c# - 在使用b的中间返回

就像是:

using (IDisposable disposable = GetSomeDisposable())
{
    //.....
    //......
    return Stg();
}

我相信这不是回报声明的合适地方,是吗?

trans by 2019-04-19T07:28:04Z

.net - 什么是C#Using block,我为什么要使用它?

这个问题在这里已有答案:

  • 在C#中“使用”有什么用处                                     29个答案

在C#中使用块的目的是什么? 它与局部变量有什么不同?

trans by 2019-03-01T09:33:57Z

c# - 使用带有多个变量的语句

这个问题在这里已有答案:

  • 在C#中嵌套使用语句                                     15个答案

通过以某种方式在同一个使用块中声明2变量,是否可以使这个代码更紧凑?

using (var sr = new StringReader(content))
{
    using (var xtr = new XmlTextReader(sr))
    {
        obj = XmlSerializer.Deserialize(xtr) as TModel;
    }
}
trans by 2019-02-22T18:02:57Z

在C#中“使用”有什么用处

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

trans by 2019-02-13T08:25:41Z

c# - 找不到类型或命名空间名称

这个问题在这里已有答案:

  • 获取“类型或命名空间名称无法找到”但一切似乎都好吗?                                     30个答案

我有一个VS 2010解决方案,其中包含Visual Studio 2010中的多个项目。一个是测试项目(我称之为“PrjTest”),另一个是Windows Forms Application项目(我称之为“PrjForm”)。 还有一个由PrjForm引用的第三个项目,它能够成功引用和使用。

PrjForm引用PrjTest,而PrjForm有一个带有VS 2010语句的类:

using PrjTest;
  1. 参考已正确添加
  2. VS 2010语句正确到位
  3. 拼写是正确的
  4. PrjTest构建成功
  5. PrjForm几乎构建,但在VS 2010行中出现错误:

找不到类型或命名空间名称'PrjTest'(您是否缺少using指令或程序集引用?)

我尝试过以下方法来解决这个问题:

  1. 删除了Resharper(因为Resharper在识别引用的项目时没有遇到任何麻烦,我认为它可能值得一试)
  2. 删除并重新添加了引用和using语句
  3. 从头开始重新创建PrjForm
  4. PrjForm目前驻留在PrjTest文件夹中,我尝试将其移动到外部文件夹
  5. 使用VS 2010的新副本在另一台计算机上加载解决方案

我做完了我的功课,花了很长时间在线寻找答案,但这些解决方案都没有帮助。

我还能尝试什么?

trans by 2019-01-03T08:13:09Z

1 共1页