List.Find()方法的運用

以前爲了找到LIST集合中某個特定項,還傻傻的用foreach去遍歷集合,再返回符合條件的項。其中,微軟早已提供了一個很好的方法來查找特定的LIST,那就是Find()方法。

List<T>.Find()接收一個類型爲T的委託,並且返回值爲bool類型。

示例:

class Program
	{
		static void Main(string[] args)
		{
			List<string> dinosaurs = new List<string>();

			dinosaurs.Add("Compsognathus");
			dinosaurs.Add("Amargasaurus");
			dinosaurs.Add("Oviraptor");
			dinosaurs.Add("Velociraptor");
			dinosaurs.Add("Deinonychus");
			dinosaurs.Add("Dilophosaurus");
			dinosaurs.Add("Gallimimus");
			dinosaurs.Add("Triceratops");

			Console.WriteLine();
			foreach (string dinosaur in dinosaurs)
			{
				Console.WriteLine(dinosaur);
			}
			
			Console.WriteLine("\nFind(EndsWithSaurus): {0}",
				dinosaurs.Find(EndsWithSaurus));		//結果爲:Amargasaurus
		}

		private static bool EndsWithSaurus(String s)
		{
			if ((s.Length > 5) &&
				(s.Substring(s.Length - 6).ToLower() == "saurus"))
			{
				return true;
			}
			else
			{
				return false;
			}
		}
	}
EndsWithSaurus即爲對應的委託方法。

還有更強大的可以直接用C#中的匿名方法,推薦使用匿名方法,代碼簡潔,而且還可以在方法中取到局部變量,這點很重要。

示例:

			int i = 5; //設置一個局部變量,用於匿名方法中

			Console.WriteLine("\nFind(EndsWithSaurus): {0}",
				dinosaurs.Find(delegate(string s) {
					return (s.Length > i) && (s.Substring(s.Length - 6).ToLower() == "saurus");
				}));		//結果爲:Amargasauru
還有用法差不多的FindAll(),這裏就不多說了



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章