楼主可用去了解下using 语法!

解决方案 »

  1.   

    不是了解不了解using语句的问题。
    对于上述的描述,是使用using对哪?还是不适用using对?
    因为第一种方法其实没有释放。那么这样操作对吗?会有什么问题吗?
      

  2.   

    都正确。
    第二种是使用了USING的写法
    USING的小括号中的对象在出了的大括号后会被系统自动释放。
      

  3.   


    释放什么东西你知道吗?你不能“拎个锤子见到一个钉子就砸一砸”,你应该弄脑筋想想。动不动就写using、没有必要写的时候也写,才是真正有问题的。
      

  4.   


    这个说法是绝对错误的。using的对象,在“出了的大括号后”会被系统自动调用其 Disposable 接口的Dispose方法,即使抛出异常时也会调用。但是谁告诉你说 Dispose 方法是释放对象自身?只有 GC 才会释放.net对象。using根本不会释放.net对象。
      

  5.   


    这个说法是绝对错误的。using的对象,在“出了的大括号后”会被系统自动调用其 Disposable 接口的Dispose方法,即使抛出异常时也会调用。但是谁告诉你说 Dispose 方法是释放对象自身?只有 GC 才会释放.net对象。using根本不会释放.net对象。

    人家问的问题是一个初学者的问题,你有必要把问题深究到N层去解释吗?
    我知道严格上讲不能这么说,当对于一个连USING都知道的人来说 我认为给他一个“自动释放”这样的简单解释有利于人家进一步学习,如果说到了一定层次,再去深入也是一种学习方法。并且如果要深究问题,GC就一定会立即释放干净.NET对象吗?托管代码的资源释放是由他的垃圾回收机制来管理和控制的。你是不是在这里还要给人家讲讲垃圾回收机制呢?
    从笼统上来说自动释放并没有错,自动释放并不等于马上或是立即释放。
    你可能是高水平的程序员,但对于我们这样的菜鸟学习者还是要慢慢深入才好。一开始就深入到底层东西不免让人晕头转向。
      

  6.   

    感觉sp1234在这里蛮喜欢显摆自己水平,老实说你总是给出一堆看似高深的问题,但又不给别人通俗易懂的正确解答。另外 我找到微软官方对于USING的解释:http://msdn.microsoft.com/zh-cn/library/zhdeatwt(v=vs.100).aspx
    其中有如下内容:
    using(C# 参考)Visual Studio 2010 其他版本 2(共 4)对本文的评价是有帮助 - 评价此主题
    using 关键字有两个主要用途:
    作为指令,用于为命名空间创建别名或导入其他命名空间中定义的类型。 请参见 using 指令。
    作为语句,用于定义一个范围,在此范围的末尾将释放对象。 请参见 using 语句。请看清最后一句:用于定义一个范围,在此范围的末尾将释放对象。
      

  7.   

    两种方法都可以吧,追求完美的话 第一种方法 末尾加个sfd=null;
      

  8.   

    第一种方法在方法结束之后,对象会被 GC 定时回收掉,第二种方法比较建议的。它是在用完之后调用 Dispose 方法把一些非托管的资源给释放掉,当然,你也可以什么都不做,如果你什么都不做,GC 也会到时候一起做掉,但是内存的不到及时的释放。