【发布时间】:2021-04-01 14:12:19
【问题描述】:
我已将二维对象数组声明为
object[,] sectionOpenings = new object[20, 4];
第一列是字符串类型,其余三列都是整数。
我希望快速搜索以在第一列中找到具有匹配字符串的行并尝试过
var first = Array.Find(sectionOpenings, p => p == "homedepot");
我收到以下错误:
错误 CS0411 无法从用法中推断方法“Array.Find(T[], Predicate)”的类型参数。尝试明确指定类型参数。
有什么建议吗?
【问题讨论】:
-
Array.Find 仅适用于一维数组
-
不要使用不同类型的二维数组,而是使用特定类型的对象的单维数组(比如具有字符串属性和三个整数属性的类)。您收到错误的原因是您的数组中的对象类型只是
object。您的谓词(lambdap => p == "homedepot")不知道该怎么做,因为p是一个对象并且它没有operator == (string)。至少(如果您想留在值类型领域),请使用List<(string, int, int, int)>或类似的元组数组。 -
谢谢@greenjaed。