Chr*_*ian 12 c# lambda coding-style
我经常发现自己使用lambdas作为某种"本地功能",通过像以下那样的重复操作让我的生活变得更轻松:
Func<string, string> GetText = (resource) => this.resourceManager.GetString(resource);
Func<float, object, string> FormatF1 = (f, o) => String.Format("{0:F1} {1}", f, o);
Func<float, object, string> FormatF2 = (f, o) => String.Format("{0:F2} {1}", f, o);
Run Code Online (Sandbox Code Playgroud)
而不是一遍又一遍地编写String.Format-thing,我可以愉快地吹掉FormatF2,例如节省自己的时间,当我需要改变格式化的东西时,只有一个地方可以进行编辑.特别是当我只需要给定函数中的功能时,我非常不愿意将它们变成一个真正的函数.虽然上面的lambdas相对较小...有时我会有较大的那些(以下是应该将数据添加到表中以进行打印输出):
Action<string, string, string> AddSurfaceData = (resource, col, unit) => {
renderTable.Cells[tableRowIndex, 0].Text = "\t" + this.GetText(resource);
renderTable.Cells[tableRowIndex, 1].Text = FormatF2(paraHydReader.GetFloat(paraHydReader.GetOrdinal(col)), "");
renderTable.Cells[tableRowIndex, 1].Style.TextAlignHorz = C1.C1Preview.AlignHorzEnum.Right;
renderTable.Cells[tableRowIndex, 2].Text = " " + this.GetText(unit);
renderTable.Cells[tableRowIndex, 2].Style.TextAlignHorz = C1.C1Preview.AlignHorzEnum.Left;
++tableRowIndex;
};
Run Code Online (Sandbox Code Playgroud)
同样,我经常需要这个,上面的所有好处也适用.但是,正如你所看到的,这个对于lambda表达式来说很长.问题是:你什么时候画线?我的最后一个lambda太多了吗?还有什么其他方法(除了使用实际函数或尝试将数据填充到容器中并循环遍历它们)以避免一遍又一遍地编写相同的代码?
提前致谢
基督教
awe*_*awe 11
它是您在方法中可能多次使用的东西,而且只在该方法中使用.我喜欢这个主意.如果它不会使您的代码难以阅读,请执行此操作.我会说你应该重新考虑一下,如果你发现很难看出lambda函数的内容与方法的真实内容是什么.在这种情况下,将它拉出一个单独的私有方法可能更干净.
最后,这真的是品味问题......