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

原文 标签 c# java first-class

多年前,当我开始面向对象编程时,给人的印象是变量(如果是正确的词)是“原始”(int,double等)或一流对象(String,JPane等)。最近关于Java和C#中的原语的答案(@Daniel Pryden:Are primitive types different in Java and C#?)进一步证明了这一点。但是,不知道C#ValueTypes是基元,对象还是其他野兽(例如第二类对象)。我看到SO只能使用first-class标记,因此也许它不再是一个有用的术语。

我没有发现the Wikipedia article有用(“此主题的专家需要引起本文的注意。”)。我将对主要与Java和C#相关的术语的分类法和当前用法表示感谢(尽管也许其他语言会有所启发)。

澄清:我想了解“一流”一词及其使用范围。

最佳答案

问题是“一流对象”不是一个明确定义的概念。

通常的用法是有人说“对象”是一类应该具有所有属性X,Y和Z的事物。但是有些事物并不具有所有这些属性,但是它们有点客观的。因此,我们将前一个称为“第一类”对象,其余的称为“第一类”……并且可能不是对象。

问题在于,使事物成为“一流”对象所需的属性有许多视图。反对意见的人民没有共识。 (例如,Java语言专家可能会激烈地争辩说,如果对象是基于模板的,则它只是一流的。)

关于“一流”的唯一真正可靠的见识将是您可以从Java和C#的相应语言规范中获得的见解。而且它们仅真正适用于相应语言/类型系统的范围内,而不适用于多种语言。

因此,“一流的Java对象”或“一流的C#对象”可能是有意义的,但从上下文中取出的“一流的对象”则没有意义。

那是我的看法...

相关文章:

c# - 循环枚举器的PLINQ迭代导致死锁

c# - C#编组问题

java - Apache Ignite-接近高速缓存一致性

macros - Erlang中的一流模式?

java - 将类存储在Map中,以便可以实例化它们

java - 无法访问可移植类库中的类

c# - 使对象识别自身并运行特定逻辑的最佳方法是什么?

java - 如何将二进制补码的二进制字节[]转换为十进制?

java - Jboss 7需要替代JRE

function - 在JVM中分配大型PermGen空间时,Scala中的一流函数是否值得关注?