gpt4 book ai didi

c# - "Attributes"到底是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 23:47:03 25 4
gpt4 key购买 nike

我已经阅读了很多关于属性的文章,并且对它们了解得相当多。

但我无法理解的一件事是:“它们到底是什么?”。

我的意思是,如果这不是继承或接口(interface)实现或其他 OOP 可理解的概念,那么这是什么概念?

当您对类或类成员使用 and 属性时,幕后会发生什么?

我已阅读此站点中的其他相关帖子。但他们并没有提供太多关于真实情况的信息。它们更多地是关于属性的使用。以及对它们到底是什么的难以理解的解释。在另一篇文章中,这是声明它们的内容:“元数据。关于您的对象/方法/属性的数据。”这并没有阐明概念

最佳答案

它们只是存储在类型的底层定义(不是实例)中的元数据。例如,如果我这样做:

[Description("some text")]
public string Name {get;set;}

然后事实是 DescriptionAttributedescription 构造函数参数 "some text" 存储在 IL 中对应属性 姓名。这对每个实例的成本没有影响,而且它本身什么都不做。只有在代码明确询问运行时时才会使用此数据:

  • “您有哪些针对 Name 的附加属性元数据?”
  • Name 是否有 DescriptionAttribute?”
  • “请为我构建针对Name 存储的DescriptionAttribute,如果有的话”

然后对结果做一些事情。

注意:编译器和/或 CLI 对某些一些 属性进行了不同的处理,并以不同的方式实现。例如,[Serializable] 成为 IL 类型标志 - 而不是 IL 属性 - 但运行时对其进行填充,以便 API 将其报告为另一个。

关于c# - "Attributes"到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27289121/

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