title: What are first-class objects in Java and C#?
body: <p>When I started OO programming many years ago I gained the impression that variables (if that is the right word) were either "primitives" (int, double, etc.) or first-class objects (String, JPane, etc.). This is reinforced by a recent answer on primitives in Java and C# (@Daniel Pryden: <a href="https://stackoverflow.com/questions/1597999/are-primitives-different-in-java-and-c">Are primitive types different in Java and C#?</a>). However don't know whether C# ValueTypes are primitives, objects or some other beast such as second-class objects. I see that SO has only one use of the <code>first-class</code> tag so maybe it is no longer a useful term.</p>
  
  <p>I did not find <a href="http://en.wikipedia.org/wiki/First-class_object" rel="noreferrer">the Wikipedia article</a> useful ("This article is in need of attention from an expert on the subject."). I'd be grateful for a taxonomy and current usage of terms, primarily related to Java and C# (though maybe other languages will shed enlightenment).</p>
  
  <p><strong>Clarification</strong>: I'd like to understand the term <em>first-class</em> and what its range of use is.</p>