Tag: using statement

哪个更好,何时:使用语句或在C#中的IDisposable上调用Dispose()?

假设我有以下内容: using(var ctx = DataContextFactory.Create(0)) { … Some code … } 为什么不做以下操作而失去几个花括号?: var ctx = DataContextFactory.Create(0); ctx.Dispose(); 感谢您的建议!

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

我想知道是否有某种备忘单,其中的对象与using语句一致… SQLConnection , MemoryStream等。 更进一步,甚至可以显示其他“拼图”,就像你应该在关闭之前使用语句括号实际调用connection.Close()一样。 这样的事情存在吗? 如果没有,也许我们应该制作一个。

C#:“使用”语句与HttpWebRequests / HttpWebResponses

Jon Skeet在我的SOApiDotNet代码(用于pre-alpha Stack Overflow API的.NET库)上发表评论(通过推特 ): @ maximz2005我注意到的一件事就是快速浏览源代码:你没有处理(原文如此)的WebResponses。 FTW“使用”声明。 他表示我需要在“使用”语句中包装这些Web会话。 但是,我对此有一个疑问:我应该从HttpWebRequest开始包装整个事情, 还是应该在“using”语句之外创建WebRequest然后将Response包装在里面 ? 我感觉不同的是,在前者中,两个物体都会被处理掉 – 这是正确的吗? 提前致谢。

C#的使用语句是否中止?

我刚刚读完了“C#4.0 in a Nutshell”(O’Reilly),我认为这对于愿意转向C#的程序员来说是一本很好的书,但它让我感到疑惑。 我的问题是using语句的定义。 根据这本书(第138页), using (StreamReader reader = File.OpenText(“file.txt”)) { … } 恰好相当于: StreamReader reader = File.OpenText(“file.txt”); try { … } finally { if (reader != null) ((IDisposable)reader).Dispose(); } 但是,假设这是真的,并且此代码在单独的线程中执行。 此线程现在使用thread.Abort()中止,因此抛出ThreadAbortException并假设线程正好在初始化读取器之后和输入try..finally子句之前。 这意味着读者不会被处置! 一种可能的解决方案是以这种方式编码: StreamReader reader = null; try { reader = File.OpenText(“file.txt”); … } finally { if (reader != null) ((IDisposable)reader).Dispose(); } 这将是中止安全的。 […]

在SQLDataReader上使用

我知道我之前提过了一个相关的问题。 我只是想到了另一个想法。 using (SqlConnection conn = new SqlConnection(‘blah blah’)) { using(SqlCommand cmd = new SqlCommand(sqlStatement, conn)) { conn.open(); // *** do I need to put this in using as well? *** SqlDataReader dr = cmd.ExecuteReader() { While(dr.Read()) { //read here } } } } 这个论点是:由于SqlDataReader dr对象不是一个新的OBJECT LIKE连接或命令对象,它只是一个指向cmd.ExecuteReader()方法的引用,我是否需要将阅读器放在一个using 。 (现在基于我以前的post,我的理解是任何使用IDisposable对象都需要放入using ,而SQLDataReaderinheritance自IDisposable ,所以我需要把它放进去。我的判断是否正确?)我只是因为它不是一个新对象,所以它会在处理一个只是指向命令的引用指针的对象时引起任何问题吗? 非常感谢

using关键字和IDisposable接口之间有什么关系?

如果我使用using关键字,我还需要实现IDisposable吗?

C# – using语句的位置

我注意到很多东西来回的一件事是将使用语句放在C#代码文件中 – 无论是在最外层还是在命名空间内。 我理解using语句的位置会影响该文件中引用的范围,但我不明白的是,在大多数情况下,有人会希望在其命名空间中使用它们的using语句。 在几乎所有情况下 ,单个文件中只存在一个命名空间声明,因此使用using语句的范围似乎/(是?)无用。 如果一个人在同一个文件中放置了多个类型和多个命名空间,那么使用语句进行范围化非常有意义,但即使在具有一个命名空间的文件中,我仍然会看到大量的这种情况。 为什么? using System; namespace MyNamespace { using System.Text; public class MyClass { // … } } 在整个项目中,看似不必要的一个例子是ASP.NET MVC源代码 。

C#using语句,SQL和SqlConnection

这是否可以使用using语句C#SQL? private static void CreateCommand(string queryString, string connectionString) { using (SqlConnection connection = new SqlConnection( connectionString)) { SqlCommand command = new SqlCommand(queryString, connection); command.Connection.Open(); command.ExecuteNonQuery(); } } 如果打开连接时出错,该怎么办? using语句是try和finally 没有捕获 因此,如果我抓到外面的使用支架,捕获器会捕获连接打开错误吗? 如果没有,如何using上面显示的using语句实现这一点?

带有using语句的SqlCommand

我看到在大多数样本中,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; } } 我知道为什么我们使用“使用”声明。 但是SqlCommand没有包含Close()方法,所以我们应该在using语句中使用它

我什么时候应该使用using语句?

可能重复: 什么是C#Using块,我为什么要使用它? 我正在将旧网站转换为C#,我不确定何时应该使用’使用’。 有没有一般指导方针? 我知道它的好处,但我并不是100%确定如何使用它。 是每次我’新’的方法/财产? SqlConnection awesomeConn = new SqlConnection(connection);