-1

我有一些类 ByteBitmap,其中包含私有字段 byte[] 字节。主类 Reader 有一个 ByteBitmap 的变量(如缓存)。Reader 实现 IDisposable。

我的问题是变量在测试期间会破坏阅读器的正确工作。我有 > 2000 个测试,这个变量破坏了其中的一些。如果我删除这个缓存变量测试很好。

在我的情况下,正确的做法是什么?

PS如果我运行包含此变量的单个测试 - 测试运行良好。

   ByteBitmap _byteBitmapCache;
   internal override ByteBitmap GetByteBitmap()
    {
        if (byteBitmapCache != null)
           return byteBitmapCache;
        _byteBitmapCache = new ByteBitmap(_width, _height);
        for (int i = 0; i < _width; ++i)
            for (int j = 0; j < _height; ++j)
                _byteBitmapCache[i, j] = _binarizedBitmap.GetXy(i, j); // faster

        return _byteBitmapCache;
    }
4

1 回答 1

0

假设你有一个using关于 reader 的声明,无论是否发生异常,它都会被处理掉。

以下是 MSDN 的解释:

using 语句可确保调用 Dispose,即使在调用对象上的方法时发生异常也是如此。您可以通过将对象放在 try 块中,然后在 finally 块中调用 Dispose 来获得相同的结果;事实上,这就是编译器翻译 using 语句的方式。

于 2013-10-03T17:57:45.290 回答