gpt4 book ai didi

c# - 如果初始化程序抛出,是否构造了一个对象?

转载 作者:太空狗 更新时间:2023-10-29 23:10:43 25 4
gpt4 key购买 nike

我正在阅读 This Article在 Jag Reeghal 的博客上,在我看来,他的建议与使用对象初始值设定项真的不是一回事。然后我意识到我并不确定。

当使用对象初始化器构造对象时,其中一个初始化器抛出(可能是 Null Reference 异常)... 对象是否实际构造?这基本上就像构造函数中抛出的异常吗?还是对象完全构建,然后初始化?

最佳答案

var x = new Foo { Property1 = 5}; 这样的对象初始化语句将像这样实现:

Foo temp = new Foo();
temp.Property1 = 5;
x = temp;

如您所见,初始化器中的属性是在构造对象之后设置的,但是直到设置了所有属性后,变量才被设置为完全初始化的对象,所以如果抛出异常,即使异常被捕获,构造的对象也会丢失(变量将保持null 或它之前的任何值)。

关于c# - 如果初始化程序抛出,是否构造了一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5697446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com