我在这里有这段代码。在case ServiceType.Register:
我看来,有两个等效的语句,一个使用正则if
语句,一个使用三元运算符?/:
。对于该if
语句,VS报告没有错误。但是用这行:
IsXML == true ? PopulateRegister(ParseType.Xml) : PopulateRegister(ParseType.Str);
VS错误地说:
只能将赋值,调用,递增,递减,等待和新对象表达式用作语句
有人知道为什么常规if
语句没有错误,但是如果您使用“?/:”(一个衬里)会引发错误?Pic也已附加。
switch (this.ServiceType)
{
case SerivceType.Login:
PopulateLogin();
break;
case SerivceType.Register:
if (IsXML == true)
PopulateRegister(ParseType.Xml);
else
PopulateRegister(ParseType.Str);
IsXML == true ? PopulateRegister(ParseType.Xml) : PopulateRegister(ParseType.Str);
break;
case SerivceType.Verify:
PopulateVerify();
break;
}
该?:
运营商用于有条件分配,不操作。
该声明:
IsXML == true ? PopulateRegister(ParseType.Xml) : PopulateRegister(ParseType.Str);
如果该方法PopulateRegister
返回一个值,并且您将该值分配给了某些值,则将是有效的。例如,这将是有效的:
string result = (someCondition) ? "condition is true" : "condition is false";
您可能想用这种方式代替条件(请注意,我们将ParseType
枚举值用作条件的返回类型,并且它充当方法的参数):
PopulateRegister((IsXML) ? ParseType.Xml : ParseType.Str);
请注意,以上是可能的,但是会产生难以理解/调试/维护的代码,通常不会被视为最佳实践。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句