<分区>
谁能举例说明如何使用匿名方法?
它们是否有缺点,例如使用它们会导致性能下降?
<分区>
谁能举例说明如何使用匿名方法?
它们是否有缺点,例如使用它们会导致性能下降?
最佳答案
我发现使用匿名方法避免全局变量非常有用
没有匿名方法:
private static Dictionary<Binding, ErrorProvider> dict =
new Dictionary<Binding, ErrorProvider>();
public static void ParseBinding(Binding binding)
{
var errorProvider = new ErrorProvider();
dict.Add(binding, errorProvider);
binding.Parse += new ConvertEventHandler(binding_Parse);
}
static void binding_Parse(object sender, ConvertEventArgs e)
{
var binding = sender as Binding;
var errorProvider = dict[binding];
try
{
// some validation form e.Value
// throws exception if not valid
}
catch (Exception ex)
{
errorProvider.SetError(binding.Control, ex.Message);
}
}
这真的很危险,因为如果不再使用,我需要自己小心地从字典中删除条目,否则我会发生内存泄漏,因为垃圾收集器永远不会处理绑定(bind)或错误提供程序。
现在使用匿名方法更简单的实现:
public static void ParseBinding(Binding binding)
{
var errorProvider = new ErrorProvider();
binding.Parse += (sender, e) =>
{
try
{
// some validation form e.Value
// throws exception if not valid
}
catch (Exception ex)
{
errorProvider.SetError(binding.Control, ex.Message);
}
};
}
关于c# - 使用匿名方法的例子和缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14065651/