C#中有没有办法将类构造函数作为标准函数引用?原因是Visual Studio抱怨用lambdas修改函数,并且通常是一个简单的select语句。
例如var ItemColors = selectedColors.Select (x => new SolidColorBrush(x));
,其中selectedColors只是IEnumerable<System.Windows.Media.Color>
。
从技术上讲,lambda不应该是多余的吗? select接受一个类型T并返回类型U的函数。纯色画笔在这里采用(正确的)类型T并返回一个U.只有我看不到在C#中这样做。在F#中它会像let ItemColors = map selectedColors (new SolidColorBrush)
。
TL; DR:我想我正在寻找var ItemColors = selectedColors.select (new SolidColorBrush)
的有效形式,它不需要lamba。这在C#中是可能的还是语言无法表达这种结构?
答案 0 :(得分:7)
你可以列出一个正式的方法:
private static SolidColorBrush Transform(Color color)
{
return new SolidColorBrush(color);
}
然后您可以像这样使用Select
:
var ItemColors = selectedColors.Select(Transform);
答案 1 :(得分:6)
不,您不能将C#构造函数作为方法组引用,并将其作为委托参数传递。最好的方法是通过问题中的lambda语法。
答案 2 :(得分:0)
我不确定我是否理解正确。但你在谈论factory
吗?
这样您就可以将值传递给工厂,它将为您创建一个实例。
SolidColorBrush brush = ColorBrushFactory.BrushFrom(color);
希望这会有所帮助。