Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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# DataTable检查null是否返回错误,但不返回变量声明_C#_Asp.net_Datatable_Webforms - Fatal编程技术网

C# DataTable检查null是否返回错误,但不返回变量声明

C# DataTable检查null是否返回错误,但不返回变量声明,c#,asp.net,datatable,webforms,C#,Asp.net,Datatable,Webforms,我有一个奇怪的错误 在这段代码中,您可以看到,我有一个关于数据库的查询,将其作为DataTable返回,并显式声明为null。现在我有一个条件来检查它是否为null,并将其传递给字符串变量。一切正常。我收到一个空字符串。没有发现异常 DataTable dtDateUploaded = _BL.GetRecordByDataTableResults(); dtDateUploaded = null; string strUploadedDate = dtDateUploaded == null

我有一个奇怪的错误

在这段代码中,您可以看到,我有一个关于数据库的查询,将其作为DataTable返回,并显式声明为null。现在我有一个条件来检查它是否为null,并将其传递给字符串变量。一切正常。我收到一个空字符串。没有发现异常

DataTable dtDateUploaded = _BL.GetRecordByDataTableResults();
dtDateUploaded = null;
string strUploadedDate = dtDateUploaded == null ? string.Empty :
                                        dtDateUploaded.Rows[0].IsNull(0) ? string.Empty :
                                        dtDateUploaded.Rows[0][0].ToString();
但当我使用相同的条件并将其直接传递给Label控件(例如,不使用字符串变量)时,我会得到一个对象引用错误。我想知道,如果我只是在上面的字符串变量上使用相同的代码,为什么会出现对象引用错误

LblRecordCount.Text = "Record Uploaded last: " + dtDateUploaded == null ? string.Empty :
                                        dtDateUploaded.Rows[0].IsNull(0) ? string.Empty :
                                        dtDateUploaded.Rows[0][0].ToString();
奇怪的是这是可行的:

LblRecordCount.Text = "Record Uploaded last: " + strUploadedDate; 

出现此错误的原因是,在第二个示例中,
+
运算符的优先级高于
=
运算符,因此您试图将“Record Uploaded last”字符串连接到空变量

相反,在第一个示例中,=运算符的优先级低于==运算符,并且不会发生错误,因为三元运算符是在赋值之前求值的

您应该使用括号将三元运算符逻辑分组在一起

LblRecordCount.Text = "Record Uploaded last: " + (dtDateUploaded == null ? string.Empty :
                                        dtDateUploaded.Rows[0].IsNull(0) ? string.Empty :
                                        dtDateUploaded.Rows[0][0].ToString());
请参阅MSDN上的