gpt4 book ai didi

c# - 在 C# 中是否有更简洁的方式来表示这个习语?

转载 作者:行者123 更新时间:2023-11-30 12:11:10 24 4
gpt4 key购买 nike

<分区>

我在一个项目中使用一个结构,像这样:

struct Position
{
public int X { get; private set; }
public int Y { get; private set; }
// etc
}

我想添加一个方法,允许我创建具有任意更改属性的结构的修改副本。例如,使用这个会很方便:

var position = new Position(5, 7);
var newPos = position.With(X: position.X + 1);

这个成语是hacky吗?有更好的方法来支持这一点吗?

public Position With(int? X = null, int? Y = null)
{
return new Position(X ?? this.X, Y ?? this.Y);
}

编辑:如果不清楚,结构是不可变的,我只是想创建一个修改了一些值的新值。顺便说一句,这与 Haskell 的记录语法糖非常相似,其中可以写成 newPos = oldPos { x = x oldPos + 1 } 。关于这种惯用语在 C# 中是否有帮助,这只是一个实验性的尝试。

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