c# - 什么是Java和C#中的第一类对象?

很多年前,当我开始OO编程时,我觉得变量(如果这是正确的词)要么是“原语”(int、double等),要么是一流的对象(string、jpane等)。这是通过最近对爪哇和C的原语的回答来加强的(@ Daniel Pryden:Are primitive types different in Java and C#?)。但是,不知道C valuetypes是原语、对象还是其他野兽(如二级对象)。我看到so只使用了一个first-class标记,所以它可能不再是一个有用的术语。
我没有发现the Wikipedia article有用(“这篇文章需要专家关注。”)。我很感激一个分类和当前使用的术语,主要与Java和C语言相关(虽然也许其他语言会减少启蒙)。
澄清:我想了解“一流”一词及其使用范围。

最佳答案

问题是“第一类对象”不是一个定义明确的概念。
通常的用法是,有人说“对象”是一类应该具有所有属性x、y和z的事物。但是还有其他事物没有所有这些属性,但它们有点像对象。所以我们将前一类对象称为“第一类”,而其余的对象不是“第一类”…可能不是物体。
问题是,对于一个事物必须使其成为“第一类”对象的属性,有许多视图。没有人会对持反对意见的人达成共识。(例如,一个javascript语言专家可能会极力争辩说,如果对象是基于模板的,那么它只是第一类。)
关于“第一类”的唯一真正可靠的见解是那些可以从Java语言和C语言各自的语言规范中搜集到的。它们只适用于各自的语言/类型系统…而不是跨多种语言。
所以“第一类Java对象”或“第一类C对象”可能是有意义的,但是“上下文中的第一类对象”不是。
这就是我的观点…

本文翻译自 https://stackoverflow.com/questions/1599176/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 c# java first-class


相关文章:

c# - 在C#中接受浮点错误有什么好处

javascript - JavaScript中的一流变量

python - 如何使Python 2的__getitem__在类上工作? [重复]

c# - 将JSON字符串反序列化为.NET对象时,反射太慢

c# - 如何在控制台窗口中打印控制字符

java - 适用于Java平台的商业BDD工具

java - intern()在Java 6和Java 7中表现不同

java - MVN相关性不正确的结果:分析

c# - 如何使用SQL从数据库中搜索多个条件?