- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我已经阅读了很多关于属性的文章,并且对它们了解得相当多。
但我无法理解的一件事是:“它们到底是什么?”。
我的意思是,如果这不是继承或接口(interface)实现或其他 OOP 可理解的概念,那么这是什么概念?
当您对类或类成员使用 and 属性时,幕后会发生什么?
我已阅读此站点中的其他相关帖子。但他们并没有提供太多关于真实情况的信息。它们更多地是关于属性的使用。以及对它们到底是什么的难以理解的解释。在另一篇文章中,这是声明它们的内容:“元数据。关于您的对象/方法/属性的数据。”这并没有阐明概念
最佳答案
它们只是存储在类型的底层定义(不是实例)中的元数据。例如,如果我这样做:
[Description("some text")]
public string Name {get;set;}
然后事实是 DescriptionAttribute
和 description
构造函数参数 "some text"
存储在 IL 中对应属性 姓名
。这对每个实例的成本没有影响,而且它本身什么都不做。只有在代码明确询问运行时时才会使用此数据:
Name
的附加属性元数据?”Name
是否有 DescriptionAttribute
?”Name
存储的DescriptionAttribute
,如果有的话”然后对结果做一些事情。
注意:编译器和/或 CLI 对某些一些 属性进行了不同的处理,并以不同的方式实现。例如,[Serializable]
成为 IL 类型标志 - 而不是 IL 属性 - 但运行时对其进行填充,以便 API 将其报告为另一个。
关于c# - "Attributes"到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27289121/
这对你们来说可能很简单,但由于我是java新手,所以我想知道实际上什么是 接下来的部分会发生什么? if (args.length > 0) { file = args[0]; } publi
在我的 View Controller 中,我将 UITapGestureRecognizer 添加到 self.view。我在 self.view 之上添加了一个小 View 。当我点击小 View
我今天尝试从 Obj-C 开始并转到 Swift,我正在阅读文档。我试图在 Swift 中创建一个简单的 IBOutlet,但它不断给我这些错误。 View Controller 没有初始化器 req
我正在尝试使用 VIM 完成(字典和当前缓冲区),但我遇到了问题?和 !在方法名称的末尾。我能以某种方式向 vim 解释方法名称(基本上是单词)最后只能有它,而且只有一个,即 method_name
我是一名优秀的程序员,十分优秀!