我只是想知道是否有可能。
假设我有一个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;
这可能是他们的另一种努力而我错过了。
答案 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
};
这就是你之后的事吗?我可能会对语言感到苦苦挣扎 - 你的意思是你想要一个正常初始化的替代方法吗?