避免在更新对象属性时出现冗余

本文关键字:冗余 属性 对象 更新 | 更新日期: 2023-09-27 18:32:09

当我实例化一个新实体时,它看起来像这样:

var myEntity = new MyEntity() 
{
    Field1 = "myValue",
    Field2 = "myOtherValue",
    ...
}

这避免了多次写入myEntity.Field1

但是当我必须更新多个属性时,我不知道有什么方法可以避免代码重复。所以目前,我确实喜欢这个:

myEntity.Field1 = "myNewValue";
myEntity.Field2 = "myOtherNewValue";
...

C# 是否允许以更简洁的方式更新多个属性?

避免在更新对象属性时出现冗余

使用等效关键字查看 C#。这有点草率,但它是最接近 VB.NET With 语句的。

另请查看此博客文章:C# 中"With"语句的简单等效项

按照@daryal上面的评论,您可以创建一个更新方法,所有参数都是可选的:

public void UpdateEntity(string Field1 = null, string Field2 = null, string Field3 = null) 
{
  this.Field1 = Field1 ?? this.Field1;
  this.Field2 = Field2 ?? this.Field2;
  this.Field3 = Field3 ?? this.Field3;
}

然后使用命名参数调用它:

e.UpdateEntity(Field1: "foo", Field3: "fiz");

这不是最干净的解决方案,而是另一种选择。如果我一直在做这样的事情,我可能会使用@Brian共享的"带有等效关键字的 C#"。

注意:此解决方案需要 C# 4。

不,VB.NET 有 With 语句,但在 C# 中没有等效语句。