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: http://stackoverflow.com/questions/1597999/are-primitives-different-in-java-and-c). 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 first-class
tag so maybe it is no longer a useful term.
I did not find the Wikipedia article useful (http://en.wikipedia.org/wiki/First-class%5Fobject) ("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).
EDIT clarification. I'd like to understand the term "first-class" and what its range of use is.
SUMMARY After 5 answers (30 mins) the picture seems to be that there is no consensus on "first-class" (except that it's not very useful here) and that the distinction between primitives and objects in C# is blurred (primitives can have methods). So now I don't know what a "primitive" is either! But I am getting a clearer idea of exactly how int
C# and int
Java differ