System.Net.HttpListener只显式实现IDisposable

avi*_*vid 6 .net

为什么HttpListener显式实现了IDisposable.这意味着你必须在调用dispose之前强制转换为IDisposable,并且在我看来,你必须调用dispose这一事实不那么明显.

Luk*_*keH 5

  1. 如果使用using块,则不需要显式强制转换。(这是处理IDisposable对象的首选惯用法。)

    using (HttpListener hl = /* ... */)
    {
        // ...
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 它的Close方法几乎是的别名Dispose。(不是我最喜欢的模式,但是框架设计者似乎喜欢它!)

    HttpListener hl = /* ... */
    try
    {
        // ...
    }
    finally
    {
        hl.Close();
    }
    
    Run Code Online (Sandbox Code Playgroud)