Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 这行C代码是做什么的? int hour=DateTime.Now.hour; ViewData[“问候语”]=(小时_C#_Asp.net_Syntax - Fatal编程技术网

C# 这行C代码是做什么的? int hour=DateTime.Now.hour; ViewData[“问候语”]=(小时

C# 这行C代码是做什么的? int hour=DateTime.Now.hour; ViewData[“问候语”]=(小时,c#,asp.net,syntax,C#,Asp.net,Syntax,很抱歉提出这个问题,但我目前正在阅读的ASP.NETMVC书籍假设我已经知道C(但我不知道) 我理解第一部分-它将当前日期和时间分配给hour变量。但是我在第二线迷路了。如果小时数小于12,则ViewDate[“问候语”]的值为“早上好”。否则,将为其指定一个值“午安” ?:位是一个。MSDN给出了一个很好的描述: 条件运算符(?:)返回 两个值中的一个,取决于 布尔表达式的值 它是if语句的简短版本 int hour = DateTime.Now.Hour; ViewData["greeti

很抱歉提出这个问题,但我目前正在阅读的ASP.NETMVC书籍假设我已经知道C(但我不知道)


我理解第一部分-它将当前日期和时间分配给hour变量。但是我在第二线迷路了。如果小时数小于12,则ViewDate[“问候语”]的值为“早上好”。否则,将为其指定一个值“午安”

?:位是一个。MSDN给出了一个很好的描述:

条件运算符(?:)返回 两个值中的一个,取决于 布尔表达式的值


它是
if
语句的简短版本

int hour = DateTime.Now.Hour; 
ViewData["greeting"] = (hour < 12 ? "Good morning" : "Good afternoon"); 
if(小时<12)
ViewData[“问候语”]=“早上好”;
其他的
ViewData[“问候语”]=“下午好”;

基本上说if hour<12使用“早上好”,否则使用“下午好”——就像内联if语句一样。

这是“if else”的另一种形式。问号左侧的语句与if语句相同,并且
ViewData[“greeting”]
在语句左侧分配值:“if It's true,右边的值为“:”如果为假。

Larsenal的答案是正确的。更一般地说,
?…:
是基于C语言的
if
的简写符号。它可能会降低可读性,但它的好处是,您可以在赋值运算符之后使用它,如您的示例所示。

仅回答问题的另一部分,您询问了符号是什么:
int hour = DateTime.Now.Hour; 
ViewData["greeting"] = (hour < 12 ? "Good morning" : "Good afternoon"); 
<=小于(小时数小于12小时)
?:=三元()基本上是说如果if语句(hour<12)=true,那么在问题makr后使用值,如果不在冒号后使用值。

?被称为条件运算符

它充当if-then-else语句,唯一的区别是它在求值时实际返回一些内容

举个简单的例子:

if (hour < 12)
    ViewData["Greeting"] = "Good Morning";
else
    ViewData["Greeting"] = "Good afternoon";
这两个例子是相同的。条件运算符由两个子句组成(条件除外),一个在冒号之前,一个在冒号之后:--before在条件==true时计算,after在条件==false时计算

<只是一个操作员,用于检查左侧是否小于右侧。1<2==真,而3<2==假

ViewData[“问候语”]只是数组ViewData中索引为
greeting
的项

整个代码只是根据当前时间分配一条问候语

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

我理解第一部分-它将当前日期和时间分配给hour变量

那不太对。让我们分析表达式右侧的每个部分:

-这是一种类型(类),用于存储和操作包含日期和时间组件的值

-这是DateTime类型的静态成员。这意味着您不使用特定实例来访问它,而是使用类型本身的名称。此静态成员返回一个用当前日期和时间填充的新DateTime实例。注意,一旦创建了这个实例,它就不会改变;几行代码之后,它就已经过时了

-返回一个数字,指示24小时格式的DateTime实例的小时部分(0表示午夜,13表示下午1点)

因此,综合起来,它返回一个表示当前小时的数字。结合其他解释条件运算符和小于运算符的答案,代码应该更有意义。如果小时数大于12,则为中午之后

这仍然是问题的症结所在。ViewData是一种特殊的字典类型(按键索引的键/值对),用于将数据从MVC控制器传递到MVC视图

我不擅长c#,但这段代码的作用非常清楚:

第一行获取当前的小时数。含义:如果是7点钟,变量“小时”的值将设置为7:

(5 > 2 ) ? dosomething() : dosomethingelse();
“ViewData”显然是一个包含一些字符串数据的数组。索引“问候语”的值将设置为“早上好”,如果是在12点之前,则设置为“下午好”,否则在

int hour = DateTime.Now.Hour;
ViewData[“问候语”]=(小时<12?“早上好”:“下午好”);
确切地说

ViewData["greeting"] = (hour < 12 ? "Good morning" : "Good afternoon"); 
ViewData[“问候语”]=(小时<12?“早上好”:“下午好”);
等于

ViewData["greeting"] = (hour < 12 ? "Good morning" : "Good afternoon"); 
if(小时<12)
ViewData[“问候语”]=“早上好”;
其他的
ViewData[“问候语”]=“下午好”;

如果这更容易理解…

你应该先学C。@Robert?如果你正在读的书假设你知道X,那么在阅读之前你应该知道X。很简单:pIt与常规的if语句略有不同;不能将正则if语句嵌入赋值运算符之后或其他表达式中。也称为“三元运算符”,称为“A”三元运算符。。。不是三元运算符。由于大多数语言通常只有一个三元运算符,因此有时被简单地称为“三元”运算符,但事实并非如此。条件运算符是三元运算符。
ViewData["greeting"] = (hour < 12 ? "Good morning" : "Good afternoon"); 
if(hour < 12)
    ViewData["greeting"] = "Good morning"; 
else
    ViewData["greeting"] = "Good afternoon";