gpt4 book ai didi

c# - 类的属性存储在?

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

它们是存储在类方法中还是实例化方法中?或者两者兼而有之?我真的在寻找一个解释,经过大量研究我无法得出明确的答案。

谢谢

最佳答案

为了精确起见,程序集中使用的所有 [属性] 都由编译器收集在一起,并写入程序集的元数据中。元数据中的两个表起到了作用。

第一个是 CustomAttribute 表,它包含每个属性的列表。列表条目具有指向具有属性 (1) 的原始声明的索引、对属性类型的构造函数的引用 (2) 以及用于在运行时构造属性对象的值的索引 (3)。

第二个是 Blob 表,CustomAttribute 表中的值索引 (3) 对其进行了索引。它包含您在属性声明中使用的值。如果使用字符串或 typeof 参数,这些值是字符串;如果使用值类型值参数,则这些值是实际值;如果使用数组,则这些值是数组。

因此,在运行时构造属性对象涉及首先通过 (1) 在 CustomAttribute 数组中查找条目。然后使用 (2) 定位属性类的构造函数,并在必要时对其进行 jit 编译。 (3) 用于查找 blob 表中的条目,根据需要转换 blob 中的值,例如从字符串中检索类型、创建数组等。并调用构造函数创建对象。

以这种方式组织它有很大的优势,即声明可以具有任意数量的属性,并且属性可以用于多种声明(程序集、类型、方法、参数、字段等)。缺点是找回它们并不是特别便宜。

关于c# - 类的属性存储在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19344640/

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