C# 如果 for 循环中的其他内容不起作用
本文关键字:其他 不起作用 如果 for 循环 | 更新日期: 2023-09-27 18:36:13
我正在创建一个Web应用程序,将excel文件导入MS Dynamics Crm。这是代码片段
for (i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i][3].ToString() != String.Empty)
{
try
{
Entity contractline = new Entity("new_contractline");
contractline["new_lineitem"] = dt.Rows[i][1].ToString();
contractline["new_sublineitem"] = dt.Rows[i][3].ToString();
createChildData = service.Create(contractline);
string guidString = createChildData.ToString();
guidRecord[i] = guidString;
}
catch (Exception ex)
{
}
}
else if (dt.Rows[i][3].ToString() == string.Empty) /**THIS BLOK BELOW WON'T FIRE **/
{
try
{
Entity contractline = new Entity("new_contractline");
contractline["new_lineitem"] = dt.Rows[i][2].ToString();
contractline["new_sublineitem"] = dt.Rows[i][3].ToString();
contractline["new_quantity"] = "33";
service.Create(contractline);
}
catch (Exception ex)
{
}
}
问题是当dt.Rows[i][3]
为空时,else if
块没有触发。可能是什么问题?
你为什么不做else
?如果您没有其他假设。
if (dt.Rows[i][3].ToString() != String.Empty)
如果.ToString()
为空,将触发。但是,如果dt.Rows[i][3]
为 null,则您已经在此处获得异常,因为您无法ToString()
null 对象。如果你在这个代码块之外有一个 try catch,我建议你检查一下,因为dt.Rows[i][3]
可能是空的,它会抛出异常。
如果你有任何其他如果,你应该使用
else if (string.IsNullOrWhiteSpace(dt.Rows[i][3].ToString()))
并更改您的 if 块(实际上我建议您在任何情况下都这样做)
if (!string.IsNullOrWhiteSpace(dt.Rows[i][3].ToString()))
原因是并非所有空格实际上都是空格键字符。您可能会获得其他空格字符,这些字符不会触发您的 String.Empty 块,因为它不为空。这将匹配您的单元格可能具有的许多空格。这也将捕获不可见的非空格键空间。一个例子是相当于HTML代码
(不间断空格),它实际上不是空格键空间(并且不会匹配"),但会占用空间。
只需使用 If...否则带字符串。IsNull或Empty(s)如下所示....
if (string.IsNullOrEmpty(dt.Rows[i][3].ToString()) == true)
{
// True.
Console.WriteLine("Null or empty");
}
else
{
Console.WriteLine("Not null and not empty");
}
你在下面试过吗? 否则如果(dt.行[i][3]。ToString().修剪() == ")