Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中作为函数调用构造函数_C#_Lambda - Fatal编程技术网

C# 在C中作为函数调用构造函数

C# 在C中作为函数调用构造函数,c#,lambda,C#,Lambda,在C中有没有一种方法可以将类构造函数作为标准函数引用?原因是VisualStudio抱怨在函数中使用lambda修改函数,而且通常是一个简单的select语句 例如,var ItemColors=selectedColors.Select x=>newsolidColorBrushX;,其中SelectedColor只是一个IEnumerable 从技术上讲,lambda不应该是多余的吗?select接受一个接受类型T并返回类型U的函数。纯色画笔在这里接受正确的类型T并返回U。只有我认为在C中没

在C中有没有一种方法可以将类构造函数作为标准函数引用?原因是VisualStudio抱怨在函数中使用lambda修改函数,而且通常是一个简单的select语句

例如,var ItemColors=selectedColors.Select x=>newsolidColorBrushX;,其中SelectedColor只是一个IEnumerable

从技术上讲,lambda不应该是多余的吗?select接受一个接受类型T并返回类型U的函数。纯色画笔在这里接受正确的类型T并返回U。只有我认为在C中没有办法做到这一点。在F中,它类似于let ItemColors=map selectedColors new solidcolorbush


TL;DR:我想我正在寻找var ItemColors=selectedColors的有效形式。选择不需要lamba的新SolidColorBrush。这在C语言中是可能的还是该语言无法表达此构造?

否您不能将C构造函数作为方法组引用,并将其作为委托参数传递。最好的方法是通过问题中的lambda语法

我不确定我是否正确理解你。但你说的是工厂吗

通过这种方式,您可以将值传递给工厂,工厂将为您创建一个实例

SolidColorBrush brush = ColorBrushFactory.BrushFrom(color);

希望这有帮助。

您可以制定一个正式的方法:

private static SolidColorBrush Transform(Color color)
{
    return new SolidColorBrush(color);
}
然后您可以使用如下选择:

var ItemColors = selectedColors.Select(Transform);

他试图从一个普通的ctor中创建一个委托实例。+1,这是一种我最近非常喜欢的构造模式,特别是对于伪不变性,以及在基类中,这些基类从静态create.related问题开始调用其实现者的方法