Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用SqlConnection对象时如何调用Dispose方法?_C#_.net_Dispose - Fatal编程技术网

C# 使用SqlConnection对象时如何调用Dispose方法?

C# 使用SqlConnection对象时如何调用Dispose方法?,c#,.net,dispose,C#,.net,Dispose,我只是在.NET中编写代码,所以当我阅读有关使用语句的时。这是可以理解的,就像下面最后一次尝试一样。有人能给我解释一下什么是((IDisposable)connection.Dispose(),如果我想使用Dispose(),为什么必须在Name变量前面指定(IDisposable) 同样: try { SqlConnection connection = new SqlConnection(AddressBox.Text.Trim());

我只是在.NET中编写代码,所以当我阅读有关使用语句的时。这是可以理解的,就像下面最后一次尝试一样。有人能给我解释一下什么是((IDisposable)connection.Dispose(),如果我想使用Dispose(),为什么必须在Name变量前面指定(IDisposable)

同样:

try
        {
            SqlConnection connection = new SqlConnection(AddressBox.Text.Trim());
            connection.Open();
        }
        finally
        {
            ((IDisposable)connection).Dispose();
        }

IDisposable
是实现C#对象处置机制的接口。例如,从文件系统读取文件需要打开一个读取流,一旦完成所有读取,则必须释放该流。打开SQL连接,然后执行一些SQL db操作,最后需要关闭打开的连接

IDisposable
接口对于这种释放资源的Dispose方法很有用

一旦块执行完成,
using
块将自动调用
Dispose
方法。在不使用块的情况下,开发者需要在工作完成后处理调用
Dispose


要检查IDisposable,请尝试创建一个实现IDisposable接口的类。

SqlConnection
默认情况下实现了
IDisposable
,因此不需要对其进行强制转换。如果您想(出于某种原因)使用try/finally方法,只需使用
connection.Dispose()
就足够了。@MarcusParsons默认情况下,我在哪里可以读取aout SqlConnection实现IDisposable?我非常需要它来了解有关dispose()的任何内容。MSDN上的一些人谈到了这一点,但我并不清楚。请帮助我理解继承自,它实现了
IDisposable
我可以在不实现IDisposable的情况下调用SqlConnection.Dispose()。那我为什么要这么做呢?我试图找到默认情况下SqlConnection.Dispose()如何调用,以及默认情况下谁拥有Dispose()方法?非托管资源?这完全是关于开发人员如何选择编写代码
using
block自动处理Dispose调用,另一种方式是开发人员可以手动调用
Dispose
方法。这里是了解IDisposable文档的好地方
try
        {
            SqlConnection connection = new SqlConnection(AddressBox.Text.Trim());
            connection.Open();
        }
        finally
        {
            ((IDisposable)connection).Dispose();
        }