gpt4 book ai didi

c#-3.0 - 创建一个将 lambda 表达式传递给构造函数的对象

转载 作者:行者123 更新时间:2023-12-01 07:22:58 26 4
gpt4 key购买 nike

我有一个具有许多属性的对象。

我希望能够在调用构造函数时分配其中的一些属性。

显而易见的解决方案是使用一个构造函数来为每个属性接受一个参数,但是当有很多属性时这很糟糕。另一种解决方案是创建重载,每个重载都采用属性值的一个子集,但我最终可能会得到数十个重载。

所以我想,如果我能说..不是很好吗?

MyObject x = new MyObject(o => o.Property1 = "ABC", o.PropertyN = xx, ...);

问题是,我太笨了,不知道该怎么做。

你知道吗?

最佳答案

C# 3 允许您使用其对象初始值设定项语法来执行此操作。

下面是一个例子:

using System;

class Program
{
static void Main()
{
Foo foo = new Foo { Bar = "bar" };
}
}

class Foo
{
public String Bar { get; set; }
}

其工作方式是编译器使用编译器生成的名称(如 <>g__initLocal0 )创建类的实例。然后编译器获取您初始化的每个属性并设置该属性的值。

基本上编译器会翻译 Main上面的方法是这样的:
static void Main()
{
// Create an instance of "Foo".
Foo <>g__initLocal0 = new Foo();
// Set the property.
<>g__initLocal0.Bar = "bar";
// Now create my "Foo" instance and set it
// equal to the compiler's instance which
// has the property set.
Foo foo = <>g__initLocal0;
}

关于c#-3.0 - 创建一个将 lambda 表达式传递给构造函数的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/975219/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com