• ده الـ class الأساسي لكل أنواع البيانات (data types) في لغة #C (حرفيًا كلها).
  • السبب في كده إن #C بتتبع (Object-Oriented Programming أو Object-Oriented Programming (OOP))، واللي فيه كل حاجة في اللغة عبارة عن object، سواء بشكل مباشر أو غير مباشر، وكلهم بيورثوا من System.Object.
  • لو عملت function بتاخد parameter من نوع object، حرفيًا هتقدر تدخلها أي data type.
  • ولو الـ function دي بترجع object، هينفع ترجع أي data type برضه.
  • كل أنواع البيانات (data types) بتورث من الـ class ده لسببين رئيسيين:
    • الـ Generics تم اختراعها سنة 2005: فمن سنة 2002 لحد 2005، كان الـ System.Object بيُستخدم لكل حاجة تقريبًا كحل عام.
    • فيه مجموعة من السلوكيات (behaviors) لازم تكون مدعومة في كل أنواع البيانات:
      • الـpublic virtual String ToString();بترجع حالة الـ object (القيم بتاعته) في شكل نص (string). (ToString CS)
      • الـpublic virtual int GetHashCode();بترجع رقم فريد بيميز الـ object (unique identifier). شوف (GetHashCode CS)
      • الـpublic virtual bool Equals(Object O2);علشان تتأكد من تساوي اتنين objects ببعض. (شوف Equals) أو Equals CS
      • الـpublic Type GetType();بترجع نوع الـ data type بتاع الـ object. شوف (GetType CS)
Object o1; // zero bytes have been allocated in Heap
 
o1 = new Object(); 
// new (IL -> newObj) - Creates a new object instance
 
Object o2 = new Object();
o2 = o1; // o2 now refers to the same object as o1

بنستخدم معاه مفهوم الـ Boxing and Unboxing.