问号和冒号在声明中是什么意思? 这是什么意思?
这是什么? 和冒号意思是?
((OperationURL[1] == "GET") ? GetRequestSignature() : "")
在以下声明中…
string requestUri = _apiURL + "?e=" + OperationURL[0] + ((OperationURL[1] == "GET") ? GetRequestSignature() : "");
这是条件运算符expression式。
(condition) ? [true path] : [false path];
例如
string value = someBooleanExpression ? "Alpha" : "Beta";
所以如果布尔expression式为true,则value将保存“Alpha”,否则保存“Beta”。
对于人们常见的陷阱,请参阅C#标签wiki中的这个问题 。
它是三元条件运算符 。
如果在括号之前的条件是?
是正确的,它将返回值的左边,否则右边的值。
这是一个三元运算符,或者是其他的简写forms。
条件? 值如果为真:值如果为false
以下是有关该主题的更多信息的链接
编辑:链接固定
在你提供的特定情况下,这是一个有条件的分配。 问号(?)前的部分是一个布尔条件,冒号(:)两边的部分是根据条件的结果赋值的值(冒号的左边是true的值,右方是虚假的价值)。
string requestUri = _apiURL + "?e=" + OperationURL[0] + ((OperationURL[1] == "GET") ? GetRequestSignature() : "");
可以翻译成:
string requestUri=""; if ((OperationURL[1] == "GET") { requestUri = _apiURL + "?e=" + GetRequestSignature(); } else { requestUri = _apiURL + "?e="; }
这也被称为“内联if”,或者如上面的三元运算符。 https://en.wikipedia.org/wiki/%3F :
它被用来减less代码,尽pipe不build议在一行中使用很多这样的代码,因为这可能会使维护代码变得非常困难。 想像:
a = b?c:(d?e:(f?g:h));
你可以去一会儿
它最终与写作基本相同:
if(b) a = c; else if(d) a = e; else if(f) a = g; else a = h;
你的情况,“string requestUri = _apiURL +”?e =“+ OperationURL [0] +((OperationURL [1] ==”GET“)?GetRequestSignature():”“);”
也可以写成:(省略else,因为它是一个空string)
string requestUri = _apiURL + "?e=" + OperationURL[0]; if((OperationURL[1] == "GET") requestUri = requestUri + GetRequestSignature();
或者像这样:
string requestUri; if((OperationURL[1] == "GET") requestUri = _apiURL + "?e=" + OperationURL[0] + GetRequestSignature(); else requestUri = _apiURL + "?e=" + OperationURL[0];
根据您的偏好/您的老板告诉您使用的代码风格。
这意味着如果“OperationURL [1]”评估为“GET”,则返回“GetRequestSignature()”,否则返回“”。 我猜“GetRequestSignature()”在这里返回一个string。 语法CONDITION? A:B基本上代表一个if-else,当CONDITION为真时返回A,当CONDITION为假时返回B.