相关疑难解决方法(0)

通过引用传递IDisposable对象会导致错误?

我正在尝试创建一个处理实现IDisposable的对象的通用方法,称为DisposeObject()

为了确保我处理原始引用指向的对象,我试图通过引用传递一个对象.

但是我收到了一个编译错误

'ref'参数类型与参数类型不匹配

在下面的(简化的)码,这两个_Baz_Bar实施IDisposable的.

替代文字

所以问题是,

  1. 为什么我收到此错误?
  2. 有办法解决它吗?

[更新] 从目前为止提供的答案,只要我没有将IDisposable参数设置为null,我可以简单地通过值传递一个对象而不使用ref.我现在还有另一个麻烦,无论是否nullDisposeObject方法中设置一次性对象.

以下是完整性的完整来源:

public class Foo : IDisposable
{
    private Bar _Bar;
    private Baz _Baz;
    private bool _IsDisposed;

    ~Foo() { Dispose(false); }

    public void Dispose(bool disposing)
    {
        if (!_IsDisposed)
        {
            if (disposing)
            {
                DisposeObject(ref _Baz);
                DisposeObject(ref _Bar);
            }
        }

        _IsDisposed = true;
    }

    private void DisposeObject(ref IDisposable obj)
    {
        try
        {
            if (obj == null) 
                return;
            obj.Dispose(); …
Run Code Online (Sandbox Code Playgroud)

c# dispose idisposable pass-by-reference

2
推荐指数
1
解决办法
3511
查看次数

标签 统计

c# ×1

dispose ×1

idisposable ×1

pass-by-reference ×1