这行C#代码有什么作用?

Sah*_*bov 2 c# asp.net syntax

int hour = DateTime.Now.Hour; 
ViewData["greeting"] = (hour < 12 ? "Good morning" : "Good afternoon"); 
Run Code Online (Sandbox Code Playgroud)

对于noob问题很抱歉,但我正在阅读的ASP.NET MVC书假定我已经知道C#(但我不知道).

我理解第一部分 - 它将当前日期和时间分配给小时变量.但我在第二线输了.那些<, ?, :符号是什么?ViewData ["greeting"]这是一个有几种类型的数组?

谢谢!

Lar*_*nal 18

如果小时小于12,则为ViewDate ["greeting"]分配值"早上好".否则,它被赋予"下午好"的值.

:一位是有条件的经营者.MSDN给出了一个很好的描述:

条件运算符(?:)根据布尔表达式的值返回两个值中的一个.


kam*_*eto 8

的?被称为条件运算符.

它充当if-then-else语句,唯一的区别是它实际上在评估时返回一些东西.

举个简单的例子:

// ex 1
if (condition)
    name = "Female";
else
    name = "Male";

// ex 2
name = condition ? "Female" : "Male";
Run Code Online (Sandbox Code Playgroud)

这两个例子是相同的.条件运算符由两个子句(除条件之外)组成,一个在冒号之前,一个在冒号之后: - 在条件== true时评估before,在条件== false时评估after.

<只是一个操作员,检查左侧是否小于右侧.1 <2 == true,而3 <2 == false.

ViewData ["greeting"]只是greeting数组ViewData中具有索引的项.

整个代码只根据当前时间分配问候消息.

编辑:如上所述,int hour = DateTime.Now.Hour;将当前小时(0-23)分配给整数变量hour


hko*_*kon 5

它是一个if声明的简短版本.

if (hour < 12)
    ViewData["Greeting"] = "Good Morning";
else
    ViewData["Greeting"] = "Good afternoon";
Run Code Online (Sandbox Code Playgroud)

  • 但它与常规if语句略有不同; 你不能在赋值运算符之后或在其他表达式中嵌入常规if语句. (3认同)