如果我有Enum以下内容:private object myEnumValLock = new object();private MyEnum _myEnumVal;public MyEnum MyEnumVal{ get { lock(this.myEnumValLock) { return this._myEnumVal; } } set { lock(this.myEnumValLock) { if (value != this._myEnumVal) { this.HandleNewMyEnumVal(this._myEnumVal, value); this._myEnumVal = value; } } }}使用开关盒时,是否可以直接使用以下属性:private void MyFunc(){ switch (this.MyEnumVal) { case MyEnum.First: // Do Something break; case MyEnum.Second: // Do Something break; }}还是我应该先读取它,然后在读取值上使用switch,如下所示:private void MyFunc(){ var myEnumVal = this.MyEnumVal; switch (myEnumVal) { case MyEnum.First: // Do Something break; case MyEnum.Second: // Do Something break; }}如果if ... else在此问题中使用as,则需要先读取该值。switch陈述是否相同?该switch语句的行为是什么?它是在每个case语句中读取值还是在开始时仅读取一次?
1 回答
鸿蒙传说
TA贡献1865条经验 获得超7个赞
我在getter中放置了一个断点,该断点在switch
语句开头仅被命中一次。我找不到任何特定的引用,它说switch
语句仅读取一次值(如果找到引用,请注释)。但是断点确实证明了这一点。
因此,尽管在的情况下需要事先读取值if ... else
,在switch
语句的情况下,则不需要。
- 1 回答
- 0 关注
- 105 浏览
添加回答
举报
0/150
提交
取消