繁体   English   中英

在属性的设置器 WPF 的 if 语句中返回 Nothing

[英]Return Nothing in an if statement of a property's setter WPF

以下代码片段的流程是什么? return; 方法? return; 执行?

public bool ActionSafeAction
{
    get
    {
        return this.ActionSafeAction;
    }

    set
    {
        if (value.Equals(this.ActionSafeAction))
        {
            return;
        }

        if (value)
        {
            this.ActivateItem(this.ActionSafeAction);
            this.ActionSASelected = false;
        }

        this.ActionSafeAction= value;
        this.NotifyOfPropertyChange(() => this.ActionSafeAction);
    }
}

它不会再做return之后发生的事情。 它立即从设置器返回,并且不会更改任何基础值。

如果ActionSafeAction已经为真,则写入ActionSafeAction = true true命中此return语句并且不再执行任何操作。

属性只是GetSet函数的语法糖。 这就是它们的设计目的。

Set 实际上是一个 function,它接受一个参数“值”并返回 void。 除了名称和您调用它的方式外,该集合实际上是: public void SetActionSafeAction(bool value) 使 getter 和 setter 易于实现和使用 - 同样,这就是 Properties 的用途。

if 中的 return 将结束此 function 的执行,然后。 与任何其他返回 void 的 function 一样。 将不执行检查和设置/更改通知的 rest。

我认为,如果我们像下面这样说明 getter 和 setter,您可能会理解得更好。 Get 和 Set 是影响特定成员的两个独立方法的隐含定义。

public class Foo
{
    private string myMember;

    public string GetMyMember()
    {
       return myMeber;
    }

    public void SetMyMember(string value)
    {
       myMember = value;
    }
}

因此,如您所见,setter 实际上是一个 void 方法,当您在此方法的任何部分调用return语句时,它只会离开方法而不执行代码的 rest。 这也是您的ActionSafeAction属性的设置器发生的事情。

上述两种方法的相等将是这个属性:

public class Foo
{
   private string myMember;

   public string MyMember
   {
      get { return myMember; }
      set { myMember = value; }
   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM