【发布时间】:2023-04-09 04:47:01
【问题描述】:
我最近创建了这个扩展方法:
public static TR Calculate<TS, TR>(this TS item, Func<TS, TR> selector)
=> selector(item);
然后,我可以重构这段丑陋的代码,来自:
int value = panel.Controls.Cast<Control>().Last().Location.Y
+ panel.Controls.Cast<Control>().Last().Size.Height;
到:
int value = panel.Controls.Cast<Control>().Last().Calculate(
o => o.Location.Y + o.Size.Height);
我想知道是否有办法使用内置的 .NET 函数来代替?
【问题讨论】:
-
什么是先天功能?
-
您尝试过 System.Linq 吗?
-
@BradleyUffner 是的,但这需要
IEnumerable<T>而不是T。上面说了,输入输出是标量,所以IEnumerable是无关紧要的。 -
@MatthewWatson MSDN Says 它返回
T的单个实例,而不是IEnumerable<T>。 -
SingleSelect是一个奇怪的名字,因为它接受了一件事情并传递了一件事情。 LINQ 通常不这样做。我认为Calculate或Execute会是一个更好的名字。不过我还是不喜欢这种模式。
标签: c#