C#中,使用using()来释放对象的时候,如果在using结构中使用了return结束方法,对象还释放吗?
C#中,使用using()标识对象的时候,如果结构中执行了return运算符结束方法,标识的对象还会被using()结构释放吗?...
C#中,使用using()标识对象的时候,如果结构中执行了return运算符结束方法,标识的对象还会被using()结构释放吗?
展开
2个回答
展开全部
会释放的,也就是说会执行对象的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语句,定义一个范围,在范围结束时处理对象。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询