Мне любопытно, как работает следующий код, особенно часть, содержащая материал делегата, так как я новичок в нем. Кроме того, существуют ли какие-либо узкие места в коде, например, использование SortedDictionary будет лучше, чем использование списка, а затем его сортировка с использованием LINQ? Итак, вот код:Объясните, как делегаты работают в следующем коде?
public class ColorManager
{
private List<ColorData> colorCodes = new List<ColorData>();
public List<ColorData> ColorCodes
{
get
{
var sortList = from a in this.colorCodes
orderby a.colorCode ascending
select a;
return sortList.ToList();
}
}
public void FillData(DataTable table)
{
for(int row = 0; row < table.Rows.Count; row++)
{
ColorData cData = new ColorData();
string name = table.Rows[row]["Color"].ToString().Trim();
if(!this.colorCodes.Exists(
delegate(ColorData e)
{
return e.ColorCode == name;
}))
{
cData.Add(table.Rows[row]["Color"].ToString());
this.colorCodes.Add(cData);
}
else
{
this.colorCodes.Find(
delegate(ColorData e)
{
return e.ColorCode == name;
}).Count++;
}
}
}
}
Как это можно было бы реорганизовать, чтобы они делились? – Xaisoft
Вы можете использовать анонимный метод везде, где ожидается делегат. Попробуйте var matchThisColor = new Func (e => e.ColorCode == name) ;. –