如何使用'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 来自哪里的来源上不是很有表现力。
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 来自哪里的来源上不是很有表现力。