如何使用'with'关键字添加?

How to add using the 'with' keyword?

public record Cube(int x, int y, int z, int w);

我最近 运行 有一段时间我在做这个:

var next = new Cube(existing.x + 1, existing.y, existing.z, existing.w);

而且我认为必须有一种更简洁的方法来向记录添加任意值。但是当我尝试这个时:

var next = existing with { x = x+1 };

它哭是因为您无权访问要添加的值。相反,我必须这样做:

var next = existing with { x = existing.x+1 };

我只是想从 with 关键字中得到太多吗?

x = x+1中的x为下一个要创建的实例的x。但是,此时此实例尚不存在,这就是编译器抱怨的原因。相反,您必须明确声明第二个 x 是现有实例之一。

我对 with 语法的理解就是——你必须在 width 语句的左边引用对象的名称。这似乎符合此处的规范:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-9.0/records

虽然 x = x + 1 很方便,但它在 x 来自哪里的来源上不是很有表现力。