一次性设置多个属性,无需初始化程序 - C#

时间:2015-11-04 13:47:22

标签: c#

我只是想知道是否有可能。

假设我有一个onject,并且已经设置了一些属性,我们无法初始化它,因为set属性将会丢失。我可以设置下面的其他属性

obj.Prop1 = value1;
obj.Prop2 = value2;
obj.Prop3 = value3;
obj.Prop4 = value4;

还有很多东西要设置。我可以像初始化器一样设置这些值吗?可能就像

obj { Prop1 = value1, Prop2 = value2, Prop3 = value3, Prop4 = value4 };

修改

我只是认为微软已经做了很少的事情来减少打字工作,比如

int a = b = c = 0;

这可能是他们的另一种努力而我错过了。

3 个答案:

答案 0 :(得分:0)

初始值设定项的含义是:立即初始化对象或根本不初始化,因此如果任何赋值失败,则整个初始化失败。这是你想要达到的目标吗?然后创建一个为您执行此操作的方法,如果出现任何错误,则抛出异常:

void SetProperties(params object[] args) {
    obj.Prop1 = args[1];
    obj.Prop2 = args[2];
    obj.Prop3 = args[3];
    obj.Prop4 = args[4];
}

现在将其称为SetProperties(1, 2, 3, 4);

在VB中,当我没记错时,有一个名为With的功能。但是C#中没有相应的内容。

编辑:但是这段代码当然是非常糟糕的,因为这样的数组应该在访问其中的成员之前验证长度和内容。我把它留下来告诉你,你想做的事情根本没用。

答案 1 :(得分:0)

没有

C#没有像with那样可以让你这样做。

根据你想要的东西,有一些方法可以接近。例如,如果要将属性设置为单个表达式,则始终可以创建自己的辅助方法来运行操作并返回引用。这就是为什么首先有对象初始化器的原因 - 不是为了节省几个按键,它允许你在一个表达式中初始化一个对象。

答案 2 :(得分:-1)

执行此操作的正常格式为

var o = new obj() {
    Prop1 = value1, 
    Prop2 = value2, 
    Prop3 = value3, 
    Prop4 = value4
};

这就是你之后的事吗?我可能会对语言感到苦苦挣扎 - 你的意思是你想要一个正常初始化的替代方法吗?