标签: using-statement

C#:"使用"语句与HttpWebRequests/HttpWebResponses

Jon Skeet 在我的SOApiDotNet代码(用于pre-alpha Stack Overflow API的.NET库)发表评论(通过推特):

@ maximz2005我注意到的一件事就是快速浏览源代码:你没有处理(原文如此)WebResponses.FTW"使用"声明.

他表示我需要将这些Web会话包装在"using"语句中.但是,我有一个问题:我应该包装整个事情,从HttpWebRequest开始,还是应该在"using"语句之外创建WebRequest然后将Response包装在里面?我感觉不同的是,在前者中,两个物体都会被处理掉 - 这是正确的吗?

提前致谢.

c# using using-statement httpwebrequest httpwebresponse

21
推荐指数
2
解决办法
3万
查看次数

使用语句与命名空间路径?C#

我最近停止使用,而是使用我调用的任何对象的完整命名空间路径.

例:

using System;    

namespace QuizViewer
{
    class Class1
    {
        Console.WriteLine("Hello World!");
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是我现在所做的.

namespace QuizViewer
{
    class Class1
    {
        System.Console.WriteLine("Hello World!");
    }
}
Run Code Online (Sandbox Code Playgroud)

在你问为什么我这样做之前,我正在使用这种风格,以便我可以准确地看到我的对象来自哪里,并且在使用不同的Timer对象和具有相似名称的其他对象时更容易.

这种编程风格是否有任何性能提升或降低?

.net c# namespaces using-statement

20
推荐指数
5
解决办法
5902
查看次数

SqlCommand with using语句

我看到在大多数样本中,SqlCommand都是这样使用的

using (SqlConnection con = new SqlConnection(CNN_STRING))
{
    using (SqlCommand cmd = new SqlCommand("Select ID,Name From Person", con))
    {
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();
        da.Fill(ds);           
        return ds;
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道为什么我们使用"使用"声明.但是SqlCommand没有包含Close()方法,所以我们应该在using语句中使用它

c# sqlcommand sqlconnection using-statement

20
推荐指数
2
解决办法
3万
查看次数

不好的做法?非正式使用c#的using语句

C#具有该using语句,特别是对于IDisposable对象.据推测,using语句中指定的任何对象都将拥有某种应该确定性释放的资源.

然而,在我看来,编程中有许多设计具有单一,明确的开始和结束,但缺乏内在的语言支持.该using构造提供了使用代码编辑器的内置特征的机会,至少清楚且自然地突出了这种设计或操作的范围.

我想到的是经常以a BeginXXX()EndXXX()方法开始的那种操作,尽管有很多不同的风格,例如涉及"开始"和"连接"的异步代码执行.

拿这个天真的例子吧.

webDataOperation.Start();
GetContentFromHardDrive();
webDataOperation.Join();
// Perform operation that requires data from both sources
Run Code Online (Sandbox Code Playgroud)

相反,如果Start方法返回了一个IDisposable.Dispose方法执行连接操作的对象,该怎么办?

using(webDataOperation.Start()) {
    GetContentFromHardDrive();
}
// Perform operation that requires data from both sources
Run Code Online (Sandbox Code Playgroud)

或者,更好的是,我特别想到的是:我有一个对象,它具有高度专业化的图形blitting,并且有一个Begin()End()方法(一个设计也出现在DirectX和XNA中).代替...

using(blitter.BlitOperation()) {
    // Do work
}
// Use result
Run Code Online (Sandbox Code Playgroud)

它似乎更自然,更易读,但它是不可取的,因为它使用IDisposable界面和using声明用于非预期的目的?换句话说,这是否与以非直观的方式运算符操作符相同

c# using-statement

19
推荐指数
4
解决办法
1992
查看次数

从'using'块中调用'return'时会发生什么?

如果我有一个像这样的使用块的方法...

    public IEnumerable<Person> GetPersons()
    {
        using (var context = new linqAssignmentsDataContext())
        {
            return context.Persons.Where(p => p.LastName.Contans("dahl"));
        }
    }
Run Code Online (Sandbox Code Playgroud)

...从using块中返回值,IDisposable对象是否仍然处理?

c# idisposable using-statement

18
推荐指数
2
解决办法
4231
查看次数

18
推荐指数
3
解决办法
2万
查看次数

是否可以在C#中扩展'using'块?

有没有办法using在C#中扩展块,以便将委托作为第二个参数与IDisposable对象一起使用,并在每次在该using块内抛出异常时执行?

想象一下,我们有一个代表,如下所示:

public delegate void ExceptionHandler(Exception ex);
Run Code Online (Sandbox Code Playgroud)

假设我有一个匹配该委托的方法,如下所示:

public void Log(Exception ex)
{
  // Some logging stuff goes here
}
Run Code Online (Sandbox Code Playgroud)

我想完成这样的事情:

using(SqlConnection connection = new SqlConnection(""), Log)
{

}
Run Code Online (Sandbox Code Playgroud)

有没有办法以这种方式扩展C#?

.net c# using-statement

18
推荐指数
2
解决办法
2542
查看次数

C#using语句是否执行try/finally?

假设我有以下代码:

private void UpdateDB(QuoteDataSet dataSet, Strint tableName)
{
    using(SQLiteConnection conn = new SQLiteConnection(_connectionString))
    {
        conn.Open();
        using (SQLiteTransaction transaction = conn.BeginTransaction())
        {
            using (SQLiteCommand cmd = new SQLiteCommand("SELECT * FROM " + tableName, conn))
            {
                using (SQLiteDataAdapter sqliteAdapter = new SQLiteDataAdapter())
                {
                    sqliteAdapter.Update(dataSet, tableName);
                }
            }
            transaction.Commit();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

C#文档声明,通过using语句,范围内的对象将被处理,并且我已经看到了几个建议我们不需要使用try/finally子句的地方.

我通常用try/finally包围我的连接,并且我总是关闭finally子句中的连接.鉴于上述代码,如果存在异常,假设连接将被关闭是否合理?

c# using exception using-statement

17
推荐指数
3
解决办法
7915
查看次数

ReSharper将使用放在命名空间之外

我在我的VS上安装了ReSharper v9.0.我也使用StyleCop.我已禁用SA1200,因此当我将using语句放在命名空间之外时,我不会再次收到警告.但是当我通过[alt] + [enter]添加引用时,它在using语句中不可用,R#将它放在命名空间中.当然,它不一致,R#应该将它放在命名空间之外.我试图将R#设置重置为出厂默认设置,它按预期工作.但是当我再次应用StyleCop规则时,这个问题又发生了.我该如何设置?

resharper namespaces stylecop using-statement

17
推荐指数
1
解决办法
7903
查看次数

是否有一个为using语句实现IDisposable的公共对象列表?

我想知道是否有某种小抄对哪些对象与using语句...顺利SQLConnection,MemoryStream等等.

更进一步,甚至可以显示其他"拼图",就像你应该connection.Close()在结束前使用语句括号实际调用一样.

这样的事情存在吗?如果没有,也许我们应该制作一个.

c# asp.net dispose idisposable using-statement

16
推荐指数
3
解决办法
6722
查看次数