gpt4 book ai didi

c# - 为什么属性被延迟实例化?

转载 作者:行者123 更新时间:2023-12-04 01:45:26 27 4
gpt4 key购买 nike

我发现 C# 中的属性似乎是延迟实例化的。

[A(123)]
class A : Attribute
{
public A(int b)
{
GetType().GetCustomAttributes(true);
}
}

在此示例中,创建新的 A 实例会导致 StackOverflowException,但如果我删除对 GetCustomAttributes() 的调用,则执行正常进行。

这是为什么呢?对我来说,当属性装饰的类正确初始化时,更有意义。

最佳答案

为什么运行时需要在请求之前实例化类上的所有属性?这就像问为什么运行时不提前创建我的类的实例,以防万一我以后想使用它。

属性是类的元数据,它们不会以任何方式影响类的工作。只有请求属性的代码关心它,其他人都不关心。所以目前的行为确实有道理。

关于c# - 为什么属性被延迟实例化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3624075/

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