Je suis curieux sur la façon dont le code suivant fonctionne, en particulier la partie contenant le contenu du délégué puisque je suis nouveau à ce sujet. En outre, y a-t-il des goulots d'étranglement dans le code, par exemple, l'utilisation d'un SortedDictionary serait-elle préférable à l'utilisation d'une liste, puis au tri à l'aide de LINQ? Ok, voici le code:Explique comment les délégués travaillent dans le code suivant?
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++;
}
}
}
}
Comment pourrait-il être refactorisé pour qu'ils soient partagés? – Xaisoft
Vous pouvez utiliser une méthode anonyme à chaque fois qu'un délégué est attendu. Essayez var matchThisColor = nouveau Func (e => e.ColorCode == name) ;. –