1

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

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

这避免了不得不写myEntity.Field1很多次。

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

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

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

4

3 回答 3

6

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

另请查看此博客文章:C# 中“With”语句的简单等价物

于 2012-04-25T15:02:05.190 回答
2

继续上面@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# with keyword equivalent”。

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

于 2012-04-25T15:17:54.893 回答
1

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

于 2012-04-25T15:01:54.907 回答