c# – 添加到方法组是否计为使用变量?
发布时间:2020-12-15 07:40:27 所属栏目:百科 来源:网络整理
导读:我从表单的代码中获取以下代码示例: protected void SomeMethod() { SomeOtherMethod(this.OnPaint); } private void SomeOtherMethod(ActionPaintEventArgs onPaint) { onPaint += MyPaint; } protected void MyPaint(PaintEventArgs e) { // paint some s
我从表单的代码中获取以下代码示例:
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”没有变化一样. 请记住,仅仅因为委托是引用类型并不意味着在传递实例时传递对变量的引用.您正在传递对实例的引用,而不是对该实例的存储位置的引用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |