1.
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(...)
这里为什么要用括号括起来?为什么不是new一个。
2.
using (WebResponse wr = req.GetResponse()){处理.......}
这里为什么又是引用?此类已经来文件头部引用了。

解决方案 »

  1.   

    2.那不是引用自己看下using 关键字
      

  2.   

    HttpWebRequest类没构造函数using   (WebResponse   wr   =   req.GetResponse())
    //区域开始
    {
        处理.......

    //区域结束出了区域就调wr的Dispose释放对象
      

  3.   

    HttpWebRequest   req   =   (HttpWebRequest)HttpWebRequest.Create(...) 
    -------------------------------------------------------------------------
    这里是强制类型转换using   (WebResponse   wr   =   req.GetResponse()){处理.......} 
    这里为什么又是引用?此类已经来文件头部引用了。 
    ----------------------------------------------------------------
    这里是使用WebResponse,使用完之后回收!
      

  4.   

    HttpWebRequest 是继承WebRequest 类的
    由于 WebRequest 类是一个抽象类,所以 WebRequest 实例在运行时的实际行为由 WebRequest.Create 静态方法所返回的子类确定。
    所以要得到HttpWebRequest 实例得调WebRequest.Create 静态方法,WebRequest.Create 返回值是WebRequest类型,所以得显示转换成HttpWebRequestusing语句,定义一个范围,在范围结束时处理对象。当在某个代码段中使用了类的实例,而希望无论因为什么原因,只要离开了这个代码段就自动调用这个类实例的Dispose。
    要达到这样的目的,用try...catch来捕捉异常也是可以的,但用using也很方便。
    例如:
    using (Class1 cls1 = new Class1(), cls2 = new Class1())
    {
      // the code using cls1, cls2
    } // call the Dispose on cls1 and cls2这里触发cls1和cls2的Dispose条件是到达using语句末尾或者中途引发了异常并且控制离开了语句块。