C# List中Find的用法
在决定使用List<T>还是使用ArrayList类时,记住List<T>在大多数情况下执行的更好并且是类型安全的。
List.Find方法:
搜索与制定谓词所定义的条件相匹配的元素,并返回整个List中的第一个匹配元素。
public T Find(Predicate<T> match)
这种方法方便快捷,直接在List中寻找相同的值,避免了反复循环去找值,提高了运行效率。
Predicate是对方法的委托,如果传递给它的对象与委托中定义的条件匹配,则返回该方法返回true。当前List的元素被逐个传递给Predicate委托,并在List中向前移动,从第一个元素开始,到最后一个元素结束。当找到匹配项时处理即停止。
//定义一个类 和里面一个带参数的构造函数
class User
{
int _id;
string _name;
public User(int id, string name)
{
_id = id;
_name = name;
}
public int id
{
set { _id = value; }
get { return _id; }
}
public string name
{
set { _name = value; }
get { return _name; }
}
}
//使用这个方法
protected void Page_Load(object sender, EventArgs e)
{
List<User> userCollection = new List<User>();
userCollection.Add(new User(1, "testOne"));
userCollection.Add(new User(2, "testTwo"));
userCollection.Add(new User(3, "testThree"));
//方法1
User resultUser = userCollection.Find((User user) => user.id == 2 && user.name.Equals("testTwo"));
//方法2
User rUser = userCollection.Find(delegate (User user)
{
return user.id == 1 && user.name.Equals("testOne");
});
Response.Write("方法1:"+resultUser.id + ",,,,," + resultUser.name+"<br>");
Response.Write("方法2:" + rUser.id + ",,,,," + rUser.name);
}