任何人都可以告诉我这个代码究竟在c#中意味着什么?

时间:2015-02-28 09:08:56

标签: c#

特别是符号? :我怎样才能以其他方式使用它们

Console.WriteLine("The rectangle with edges [{0},{1}] is {2}a square" ,
                r3.Edge1, r3.Edge2, (r3.IsSquare()) ? "" : "not ");

4 个答案:

答案 0 :(得分:1)

简单地说条件运算符(?)执行following

  

如果条件为true,则评估first_expression并将其作为结果。如果条件为false,则评估second_expression并将其作为结果

输入以下列格式给出,

  

条件? first_expression:second_expression;

在您的情况下参数如下,

  condition  =  r3.IsSquare()  // <= return a Boolean I guess
  first_expression = ""    // Empty string
  second_expression = not  // word `not` 

所以在你的情况下代码(r3.IsSquare()) ? "" : "not ")做了什么,

  • 如果r3是正方形,则输出为"",为空字符串。
  • 如果r3不是正方形,则输出为单词not

请注意,调用IsSquare()的方法r3应返回布尔值(true或false)。

在控制台程序上评估相同的条件,

    // if r3.IsSquare() return true
    Console.WriteLine((true ? "" : "not")); // <= Will out an empty
    // if r3.IsSquare() return false
    Console.WriteLine((false ? "" : "not")); // will out the word `not`

    Console.ReadKey();

答案 1 :(得分:0)

看看MSDN

简单示例

int input = Convert.ToInt32(Console.ReadLine());
string classify;

// if-else construction.
if (input > 0)
    classify = "positive";
else
    classify = "negative";

// ?: conditional operator.
classify = (input > 0) ? "positive" : "negative";

答案 2 :(得分:0)

这是一个三元运营商。它的基本工作方式是这样的:

bool thingToCheck = true;
var x = thingToCheck ? "thingToCheck is true" : "thingToCheck is false";
Console.WriteLine(x);

MSDN reference

答案 3 :(得分:0)

正如其他人所说,?是三元运营商。

所以回答实际问题,

Console.WriteLine("The rectangle with edges [{0},{1}] is {2}a square" ,
                r3.Edge1, r3.Edge2, (r3.IsSquare()) ? "" : "not ");
当该行写入控制台时,

{0}和{1}将分别替换为r3.Edge1和r3.Edge2的值。 r3.IsSquare()可能返回一个布尔值,所以如果它返回true,它将什么都不写(空字符串“”),但如果它返回false,它将写入“not”。

例如,假设r3.IsSquare()返回false,最终结果看起来像The rectangle with edges[3, 6] is not a square,如果它返回true,那么它会说The rectangle with edges[3, 6] is a square