c# – 添加到方法组是否计为使用变量?

前端之家收集整理的这篇文章主要介绍了c# – 添加到方法组是否计为使用变量?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我从表单的代码获取以下代码示例:
protected void SomeMethod()
    {
        SomeOtherMethod(this.OnPaint);
    }

    private void SomeOtherMethod(Action<PaintEventArgs> onPaint)
    {
        onPaint += MyPaint;
    }

    protected void MyPaint(PaintEventArgs e)
    {
        // paint some stuff
    }

第二种方法(SomeOtherMethod)有resharper抱怨我.它说onPaint“在任何执行路径中都没有使用赋值”.

在我看来它被使用是因为我在绘制完成时调用方法列表中添加了一个方法.

但通常当resharper告诉我这样的事情是因为我不理解C#的某些部分.就像当参数超出范围时,我添加到列表中的项目将被删除(或类似的东西).

我想我会问这里是否有人知道重塑者试图告诉我什么.

(旁注:我通常只是重写OnPaint.但我试图让OnPaint在另一个类中调用一个方法.我不想公开公开该方法,所以我想我会传入OnPaint组并添加它. )

解决方法

警告是正确的.考虑以下:
int X;
int Y;
void SomeMethod()
{         
    SomeOtherMethod(this.X);
}      
void SomeOtherMethod(int x)
{
    x += this.Y;
}

这里代码修改形式参数x,然后从不使用修改后的x.这不会修改“this.X”

你和代表做了同样的事情.您修改形式参数,然后从不使用结果;原始的“OnPaint”没有变化,就像我的例子中“X”没有变化一样.

请记住,仅仅因为委托是引用类型并不意味着在传递实例时传递对变量的引用.您正在传递对实例的引用,而不是对该实例的存储位置的引用.

猜你在找的C#相关文章