gpt4 book ai didi

c# - if语句和 "?/:"运算符的区别

转载 作者:行者123 更新时间:2023-11-30 18:56:23 24 4
gpt4 key购买 nike

我这里有这段代码。在 case ServiceType.Register: 中,我有两个等效语句,一个使用常规 if 语句,另一个使用三元运算符 ?/:。对于 if 语句,VS 没有报错。然而,这一行:

是 XML == true 吗? PopulateRegister(ParseType.Xml) : PopulateRegister(ParseType.Str);

VS 错误地说:

Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement

任何人都知道为什么常规 if 语句没有错误,但是如果您使用“?/:”(一个衬里)会抛出错误?还附上了图片。

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;
}

enter image description here

最佳答案

?: 运算符用于条件赋值,而不是操作。

声明:

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);

请注意,上述情况是可行的,但会产生难以理解/调试/维护的代码,通常不会被视为最佳实践。

关于c# - if语句和 "?/:"运算符的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29995569/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com