一次设置多个属性,不需要初始化器-C#

本文关键字:属性 不需要 初始化 -C# 一次 设置 | 更新日期: 2023-09-27 18:20:28

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

假设我有一个onject,它的一些属性已经设置好了,考虑到设置的属性将丢失,我们无法初始化它。我可以设置其他属性,如以下

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;

这可能是他们的又一次努力,我错过了。

一次设置多个属性,不需要初始化器-C#

否。

C#没有像with那样允许您执行此操作。

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

初始化器的含义是:立即初始化对象,或者根本不初始化,因此,如果任何赋值失败,整个初始化都应该失败。这就是你想要实现的吗?然后创建一个为您执行此操作的方法,并在出现任何问题时抛出异常:

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#中并没有类似的东西。

EDIT:但是,这段代码当然很脏,因为在访问中的成员之前,应该验证这样的数组的长度和内容。我省略了这个是为了向你表明,你想做的事情根本没有用。

执行此操作的正常格式为

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

这就是你想要的吗?我可能在语言上有点吃力——你的意思是你想要一个替代正常初始化的方法吗?