更改嵌套记录中的属性值

2023-11-24

是否可以使用with关键字创建嵌套记录的新实例,其嵌套属性具有不同的值 - 两种情况:简单属性和集合?让我们看一个例子:

class Program
{
    static void Main(string[] args)
    {
        var company = new Company(
            Name: "Company1",
            Branch: new Branch(
                Location: "Krakow",
                Employees: new[]
                {
                    new Employee("Robert")
                }));

        Console.WriteLine(company);
    }
}

internal record Company(string Name, Branch Branch);
internal record Branch(string Location, IEnumerable<Employee> Employees);
internal record Employee(string FirstName);

在上面的示例中,我想创建一条新记录,但更改了分支位置的值("Krakow")和员工姓名("Robert")。我怎样才能最有效地做到这一点?


你可以嵌套你的with表达式:

var clone = company with {
    Name = "Company2",
    Branch = company.Branch with {
        Location = "Warshaw",
        Employees = new[]
        {
            company.Branch.Employees.First() with 
            {
                FirstName = "Bob"
            }
        }}};

Console.WriteLine(clone);
foreach (var e in clone.Branch.Employees)
{
    Console.WriteLine(e);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更改嵌套记录中的属性值 的相关文章

随机推荐