在列表视图中添加项目时使用未分配的局部变量



我正在尝试比较列表视图中是否已经存在项目。
它说:

使用未赋值的局部变量"已经在列表中"

bool alreadyInList; 
foreach (var itm in lvCart.Items) 
{
     if (itm == item) 
     {
         alreadyInList = true; 
         break; 
     }
}
if(!alreadyInList)
{
      lvCart.Items.Add(new ListViewItem(new string[] { item, price, noi }));
}

其他人说如何避免明确的赋值问题。在首次读取局部变量之前,始终需要明确分配它们。

但是,无论如何,我建议使用 LINQ 使代码更简单:

bool alreadyInList = lvCart.Items.Contains(item);

(根据Items的类型,您可能需要类似 lvCart.Items.Cast<SomeType>().Contains(item) 的东西。

您需要

分配alreadyInList,因为当您尝试在 if 语句中使用它时,它可能没有被分配(因为您的代码路径链留下了未及时分配变量的可能性):

bool alreadyInList; 

或者使用 linq:

bool alreadyInList = lvCart.Items.Any(itm => item == itm);

C#编译器通常非常擅长告诉你出了什么问题,你只需要注意它。

错误非常明显。如果你的if语句没有被执行,你的变量永远不会被赋值。定义时为其指定默认值

bool alreadyInList = false;

相关内容

  • 没有找到相关文章

最新更新