Tag: using statement

删除和/或排序使用有什么价值?

我总是运行删除和排序使用 ,因为它似乎是正确的事情。 但是刚才我想知道:为什么我们这样做? 当然,清洁和紧凑的代码总是有好处的。 如果MS花时间将它作为VS中的菜单项,那么必须有一些好处。 任何人都可以回答:为什么这样做? 删除和/或排序使用的编译时或运行时(或其他)的好处是什么?

试着更好地理解’使用’语句

我已经阅读了几篇关于using语句的文章,试图了解何时应该使用它。 这听起来像大多数人认为它应该尽可能多地使用,因为它可以保证处理未使用的物体。 问题是所有的例子总是显示如下: using (SqlCommand scmFetch = new SqlCommand()) { // code } 这是有道理的,但它只是一小段代码。 在数据库上执行查询时应该怎么做? 所有步骤是什么? 它看起来像这样: string sQuery = @” SELECT [ID], [Description] FROM [Zones] ORDER BY [Description] “; DataTable dtZones = new DataTable(“Zones”); using (SqlConnection scnFetchZones = new SqlConnection()) { scnFetchZones.ConnectionString = __sConnectionString; scnFetchZones.Open(); using (SqlCommand scmdFetchZones = new SqlCommand()) { scmdFetchZones.Connection = […]

在处理命令并且直接在命令上定义连接时,连接是否关闭?

我知道很多例子都存在,其中定义了SqlConnection,然后在Using块中定义了SqlCommand: using (var conn = new SqlConnection(connString)) { using (var cmd = new SqlCommand()) { cmd.Connection = conn; //open the connection } } 我的问题:如果我直接在SqlCommand上定义连接,那么在处理命令时连接是否会关闭? using (var cmd = new SqlCommand()) { cmd.Connection = new SqlConnection(connString); //open the connection }

将’IDisposable’嵌套在一个’using’语句中

关于在单个’using’语句中使用嵌套一次性用法的快速问题:我应该写出每个一次性使用语句,还是可以将它们嵌入一个? 例: using( FileStream inFile = new FileStream( “myFile.txt”, FileMode.Open ) ) using( GZipStream gzip = new GZipStream( inFile, CompressionMode.Decompress ) ) using( FileStream outFile = new FileStream( “myNewFile.txt”, FileMode.CreateNew ) ) { gzip.CopyTo( outstream ); } 与 using( GZipStream gzip = new GZipStream( new FileStream( “myFile.txt”, FileMode.Open ), CompressionMode.Decompress ) ) using( FileStream outFile […]

为什么在using语句中声明的变量被视为readonly?

为什么using变量作为只读处理? 它是c#语言规范还是托管语言规范? 这是因为c#是.net语言? 提前致谢。 注意 :using变量是在using语句中出现的变量 示例代码: using (Form s = new Form) { myfunc(ref s); } 我们不能在使用块中更改using变量的值。 代码会引发错误。 注意 :我不想让你讨论readonly关键字。

一次性用品,使用和尝试/捕捉块

今天有一个心理障碍,需要一只手validation我的逻辑并不是很好的。 传统上我会做类似这样的文件i / o: FileStream fs = null; // So it’s visible in the finally block try { fs = File.Open(“Foo.txt”, FileMode.Open); /// Do Stuff } catch(IOException) { /// Handle Stuff } finally { if (fs != null) fs.Close(); } 但是,这不是很优雅。 理想情况下,当我完成时,我想使用using块来处理文件流,但我不确定using和try / catch之间的协同作用。 这就是我想要实现上述内容的方式: try { using(FileStream fs = File.Open(“Foo.txt”, FileMode.Open)) { /// Do […]

关于使用块返回的最佳实践

哪种方式更好的做法:从using语句中的方法返回一个值或者之前声明一个变量,将其设置在内部并在之后返回? public int Foo() { using(..) { return bar; } } 要么 public int Foo() { var b = null; using(..) { b = bar; } return b; }

关闭SqlConnection和SqlCommand c#

在我的DAL中,我写这样的查询: using(SQLConnection conn = “connection string here”) { SQLCommand cmd = new (“sql query”, conn); // execute it blah blah } 现在我发现我没有明确关闭SQLCommand对象。 现在我知道’using’块将处理SQLConnection对象,但这还会处理SQLCommand对象吗? 如果不是我有一个严重的问题。 我必须在SQLCommand上使用’使用’成千上万行代码,或者在数百种方法上执行cmd.Close()。 请告诉我,如果使用或关闭命令将提供更好的Web应用程序内存管理?

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

C#具有using语句,特别适用于IDisposable对象。 据推测, using语句中指定的任何对象都将拥有某种应该确定性释放的资源。 然而,在我看来,编程中有许多设计具有单一的,明确的开始和结束,但缺乏内在的语言支持。 using构造提供了使用代码编辑器的内置特征的机会,至少清楚且自然地突出了这种设计或操作的范围。 我想到的是经常以BeginXXX()和EndXXX()方法开始的那种操作,尽管有很多不同的风格,例如涉及“开始”和“连接”的异步代码执行。 拿这个天真的例子吧。 webDataOperation.Start(); GetContentFromHardDrive(); webDataOperation.Join(); // Perform operation that requires data from both sources 相反,如果Start方法返回IDisposable.Dispose方法执行连接操作的对象,该怎么办? using(webDataOperation.Start()) { GetContentFromHardDrive(); } // Perform operation that requires data from both sources 或者,更好的是,我特别想到的是:我有一个高度专业化的图形blitting的对象,并且有一个Begin()和End()方法(DirectX和XNA中也有一个设计)。 代替… using(blitter.BlitOperation()) { // Do work } // Use result 它似乎更自然,更易读,但它是不可取的,因为它使用IDisposable接口和using语句用于非预期目的? 换句话说,这是否与以非直观的方式运算符操作符相同 ?

识别IDisposable对象

我必须检查一些其他人有一些内存泄漏的代码。 现在我正在搜索一次性对象以使用using语句对它们进行包围,我想知道是否有一种快速方式告诉你所有声明的一次性对象。我的意思是像resharper或另一个visual studio插件。 谢谢。