我正在尝试比较列表视图中是否已经存在项目。
它说:
使用未赋值的局部变量"已经在列表中"
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;