问号和冒号在声明中是什么意思? 这是什么意思?

这是什么? 和冒号意思是?

((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.