Класс List<T> строго типизированный список объектов. Объекты доступный по индексу. Поддерживает методы для поиска по списку, выполнения сортировки и других операций со списками.
Ниже приведен пример, где поиск осуществляется в цикле foreach и методом Find класса List<T>.
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
namespace Blogger_ListT
{
class Program
{
class MenuForOrder
{
public MenuForOrder()
{
Id = -1;
Name = string.Empty;
Price = -1;
}
public MenuForOrder(int id,string name,int price)
{
Id = id;
Name = name;
Price = price;
}
private int Id;
private string Name;
private int Price;
public int ID
{
get
{
return Id;
}
set
{
Id = value;
}
}
public string NAME
{
get
{
return Name;
}
set
{
Name = value;
}
}
public int PRICE
{
get
{
return Price;
}
set
{
Price = value;
}
}
public override string ToString()
{
return this.Id.ToString()+" "+this.Name+" "+this.PRICE.ToString();
}
}
static List<MenuForOrder> lMenuForOrder ;
static void Main(string[] args)
{
lMenuForOrder = new List<MenuForOrder>();
for (int i = 1; i < 100000; i++)
{
lMenuForOrder.Add(new MenuForOrder(i, "Mohito", 250));
}
Stopwatch sw=new Stopwatch();
sw.Start();
MenuForOrder findeditem = lMenuForOrder.Find(delegate(MenuForOrder m) { return m.ID == 99999; });
Console.WriteLine(findeditem.ToString() + " Find Time: " + sw.ElapsedMilliseconds.ToString());
sw.Start();
foreach (MenuForOrder mfo in lMenuForOrder)
{
if (mfo.ID == 99999)
Console.WriteLine(mfo.ToString() + " Find Time: " + sw.ElapsedMilliseconds.ToString());
}
Console.Read();
}
}
}
Вот какой результат получился
Но если поменять местами цикл и метод, то получается такой же ответ.
Метод Find более читабелен. Но в нем опять таки реализован цикл foreach. Данный пример использует FrameWork 2.0 для более старших версии используйте Find метод вот так
MenuForOrder findeditem = lMenuForOrder.Find(finded => finded.Id ==99999).
Жду Откликов.
Ниже приведен пример, где поиск осуществляется в цикле foreach и методом Find класса List<T>.
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
namespace Blogger_ListT
{
class Program
{
class MenuForOrder
{
public MenuForOrder()
{
Id = -1;
Name = string.Empty;
Price = -1;
}
public MenuForOrder(int id,string name,int price)
{
Id = id;
Name = name;
Price = price;
}
private int Id;
private string Name;
private int Price;
public int ID
{
get
{
return Id;
}
set
{
Id = value;
}
}
public string NAME
{
get
{
return Name;
}
set
{
Name = value;
}
}
public int PRICE
{
get
{
return Price;
}
set
{
Price = value;
}
}
public override string ToString()
{
return this.Id.ToString()+" "+this.Name+" "+this.PRICE.ToString();
}
}
static List<MenuForOrder> lMenuForOrder ;
static void Main(string[] args)
{
lMenuForOrder = new List<MenuForOrder>();
for (int i = 1; i < 100000; i++)
{
lMenuForOrder.Add(new MenuForOrder(i, "Mohito", 250));
}
Stopwatch sw=new Stopwatch();
sw.Start();
MenuForOrder findeditem = lMenuForOrder.Find(delegate(MenuForOrder m) { return m.ID == 99999; });
Console.WriteLine(findeditem.ToString() + " Find Time: " + sw.ElapsedMilliseconds.ToString());
sw.Start();
foreach (MenuForOrder mfo in lMenuForOrder)
{
if (mfo.ID == 99999)
Console.WriteLine(mfo.ToString() + " Find Time: " + sw.ElapsedMilliseconds.ToString());
}
Console.Read();
}
}
}
Вот какой результат получился
Но если поменять местами цикл и метод, то получается такой же ответ.
Метод Find более читабелен. Но в нем опять таки реализован цикл foreach. Данный пример использует FrameWork 2.0 для более старших версии используйте Find метод вот так
MenuForOrder findeditem = lMenuForOrder.Find(finded => finded.Id ==99999).
Жду Откликов.
Комментариев нет:
Отправить комментарий