我正在将现有的 Windows Phone 8 应用程序转换为 WP 7.1。但是我遇到了一个错误
'System.Array' does not contain a definition for 'FindIndex'
在这一行。我错过了什么?
index = Array.FindIndex(AnswerLevelArr, s => s.Contains(CurrentFileName));
我正在将现有的 Windows Phone 8 应用程序转换为 WP 7.1。但是我遇到了一个错误
'System.Array' does not contain a definition for 'FindIndex'
在这一行。我错过了什么?
index = Array.FindIndex(AnswerLevelArr, s => s.Contains(CurrentFileName));
Windows Phone 7.1 不支持Array.FindIndex 方法(T[],谓词) 。
版本信息
Windows Phone 操作系统
支持:8.0
相反,您可以使用Linq
(确保添加using System.Linq;
到文件顶部):
index = AnswerLevelArr
.Select((i, position) => new { Item = i, IndexOf = position })
.First(s => s.Item.Contains(CurrentFileName)).IndexOf;
或者:
int index=0;
var result = AnswerLevelArr.SkipWhile((s, ind) =>
{
if (!s.Contains(CurrentFileName))
{
index++;
return false;
}
else
{
return true;
}
}).First();
根据msdn
public static int FindIndex<T>(
T[] array,
Predicate<T> match
)
http://msdn.microsoft.com/en-us/library/03y7c6xy.aspx
你需要包括类型?
编辑:index = Array.FindIndex<T>(AnswerLevelArr, s => s.Contains(CurrentFileName));
EDIT2:为历史而保留,但在进一步检查后是错误的......
如果您想要一个类似于您的方法的查找索引,您可以提供覆盖
int FindIndex(string s)
{
int size = this.length;
for(int i = 0; i < size; i++)
{
if(this[i] = s)
return i;
}
return -1;
}
从Array.FindIndex<T> Method (T[], Predicate<T>)
Version Information
Windows Phone OS
Supported in: 8.0
看起来这种方法不支持Windows Phone 7.1