0

我正在创建一个可移植类库 (PCL),我正在尝试使用 List.Exists() 和 List.TrueForAll(),但有人告诉我 System.Collections.Generic.List 不包含 Exists 或真正的一切。我正在创建的 PCL 可以跨 .Net 4.5、Silverlight 4、Windows Phone 7.5、Mono Android 和 Mono iOS 工作。有什么我想念的吗?

注意:此代码适用于我制作的 .Net 4.0 库。

返回错误的代码示例:

List<object> set0;
List<object> set1;

if (set0.TrueForAll(obj0 => set1.Exists(obj1 => obj0.Equals(obj1))))
    return true;

if(!(set0.Exists(obj0 => !set1.Exists(obj1 => obj0.Equals(obj1)))))
    return true;

收到的错误:

错误:“System.Collections.Generic.List”不包含“Exists”的定义,并且找不到接受“System.Collections.Generic.List”类型的第一个参数的扩展方法“Exists”(您是否缺少使用指令还是程序集引用?)

错误:“System.Collections.Generic.List”不包含“TrueForAll”的定义,并且找不到接受“System.Collections.Generic.List”类型的第一个参数的扩展方法“TrueForAll”(您是否缺少使用指令还是程序集引用?)

4

1 回答 1

1

您似乎正试图以一种麻烦的方式确定是否set0set1. 如果您将类型从 更改List<>HashSet<>SortedSet<>,您将免费获得此功能。

否则,考虑使用

set0.Except(set1).Any()

来自林克。

我不确定可移植类库 (PCL) 中存在哪些方法,但根据文档List<>.Exists此方法确实存在。还有我提到的 Linq 方法。

于 2013-06-13T14:42:35.883 回答