I have seen many times statements like- "Please make this feature a first class citizen in so and so language/platform". For example, it is said about enums in C#/.net. So, when is a feature considered a "First class citizen" in a programming language/platform?

  Definition
  
  An object is first-class when
  it:
  
  
  can be stored in variables and data structures
  can be passed as a parameter to a subroutine 
  can be returned as the result of a subroutine
  can be constructed at runtime 
  has intrinsic identity (independent of any given name)
  
  
  The term "object" is used
  loosely here, not necessarily
  referring to objects in
  object-oriented programming. The
  simplest scalar data types, such as
  integer and floating-point numbers,
  are nearly always first-class.


http://en.wikipedia.org/wiki/First_class_object
