C#中,使用using()来释放对象的时候,如果在using结构中使用了return结束方法,对象还释放吗?

C#中,使用using()标识对象的时候,如果结构中执行了return运算符结束方法,标识的对象还会被using()结构释放吗?... C#中,使用using()标识对象的时候,如果结构中执行了return运算符结束方法,标识的对象还会被using()结构释放吗? 展开
 我来答
dalmeeme
推荐于2017-12-16 · TA获得超过2915个赞
知道大有可为答主
回答量:1493
采纳率:81%
帮助的人:1070万
展开全部

会释放的,也就是说会执行对象的Dispose方法的。

我写了个小例子可以说明这一点。

	class Program
{
static void Main(string[] args)
{
using (A a = new A())
{
Console.WriteLine("开始执行。");
return;
}
}
}
class A : IDisposable
{

#region IDisposable 成员

public void Dispose()
{
Console.WriteLine("执行了Dispose方法。");
Console.ReadKey();
}

#endregion
}

运行结果:

匿名用户
2016-06-24
展开全部
1.using指令。using+命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间,类似于Java的import,这个功能也是最常用的,几乎每个cs的程序都会用到。例如:usingSystem;usingSystem.Data;2.using别名。using+别名=包括详细命名空间信息的具体的类型。这种做法有个好处就是当同一个cs引用了两个不同的命名空间,但两个命名空间都包括了一个相同名字的类型的时候。当需要用到这个类型的时候,就每个地方都要用详细命名空间的法来区分这些相同名字的类型。而用别名的方法会更简洁,用到哪个类就给哪个类做别名声明就可以了。例如:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingaClass=ConsoleApplication1.MyClass;usingbClass=ConsoleApplication2.MyClass;namespaceConsoleApplication1{publicclassMyClass{publicoverridestringToString(){returnYouareinConsoleApplication1.MyClass;}}classTestUsing{}}namespaceConsoleApplication2{classMyClass{publicoverridestringToString(){returnYouareinConsoleApplication2.MyClass;}}}namespaceTestUsing{usingConsoleApplication1;usingConsoleApplication2;classClassTestUsing{staticvoidMain(){aClassmy1=newaClass();Console.WriteLine(my1);bClassmy2=newbClass();Console.WriteLine(my2);Console.WriteLine(ressanykey);Console.Read();}}}3.using语句,定义一个范围,在范围结束时处理对象。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式