设置条件时的逻辑问题我有一个需求,这个'if'结构必须改变。按照目前的编码,仅当RM发送的策略GUID与服务器上策略的GUID匹配时,才会设置代理版本。无论GUID是否匹配,我们总是希望设置版本。(怎么回事)下面是代码ResourcePolicyrp=null;尝试{intrpindex=allObjects.Find(newGuid(policyGuid));如果(rpindex!=-1){rp=(ResourcePolicy)allObjects.GetAt(rpindex);}}catch(System.Exceptionerr){SpoDebug.DebugTraceSevere(func,"BadGUID:"+policyGuid+"Exception:"+err.Message);rp=空;}if(rp==null)//这是我们需要集中注意力的if循环{SpoDebug.DebugTraceSevere(func,"UnabletofindResourcePolicywithGUID:"+policyGuid);}else{//搜索指定主机foreach(DataModelObjectdmoinallObjects){if(dmoisIResourcePolicy){if(string.Compare(dmo.Name,hostName,true)==0){IResourcePolicyirp=(IResourcePolicy)管理部;irp.ResourcePolicy=rp;irp.AgentPolicyVersion.Version=Convert.ToInt64(policyVersion);irp.ResourcePolicyEnabled=Convert.ToBoolean(enabled);irp.AgentVersion=agentVersion;所以我在ifloop(if(rp==null))之外做了赋值(irp.AgentVersion=agentVersion;),就像这样,但我没有得到版本值foreach(DataModelObjectdmoinallObjects){if(dmoisIResourcePolicy){if(string.Compare(dmo.Name,hostName,true)==0){irp.AgentVersion=agentVersion;任何人都可以建议我在这里做什么我想你的意思是:ResourcePolicyrp=null;尝试{intrpindex=allObjects.Find(newGuid(policyGuid));如果(rpindex!=-1){rp=(ResourcePolicy)allObjects.GetAt(rpindex);}}catch(System.Exceptionerr){SpoDebug.DebugTraceSevere(func,"BadGUID:"+policyGuid+"Exception:"+err.Message);}if(rp==null)//这是我们需要集中注意力的if循环{SpoDebug.DebugTraceSevere(func,"UnabletofindResourcePolicywithGUID:"+policyGuid);}//搜索指定主机foreach(DataModelObjectdmoinallObjects){if(dmoisIResourcePolicy&&string.Compare(dmo.Name,hostName,true)==0)){IResourcePolicyirp=(IResourcePolicy)dmo;irp.AgentVersion=agentVersion;if(rp!=null){irp.ResourcePolicy=rp;irp.AgentPolicyVersion.Version=Convert.ToInt64(policyVersion);irp.ResourcePolicyEnabled=Convert.ToBoolean(enabled);}//...}}我已经删除了else位,所以循环总是被执行,然后在循环内添加if(rp!=null),防止它的某些部分这样做,所以你不必重复循环代码,我想你在做什么?以上就是C#学习教程:设置条件时的逻辑问题的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处:
