// // System.Object.cs // // Author: // Miguel de Icaza (miguel@ximian.com) // // (C) Ximian, Inc. http://www.ximian.com // // using System.Runtime.CompilerServices; namespace System { public class Object { // // Compares this object to the specified object. // Returns true if they are equal, false otherwise. // public virtual bool Equals (object o) { return this == o; } // // Compares two objects for equality // public static bool Equals (object a, object b) { if (a == b) return true; if (a == null || b == null) return false; return a.Equals (b); } // // Initializes a new instance of the object class. // public Object () { } // // Object destructor. // ~Object () { } // // Returns a hashcode for this object. Each derived // class should return a hash code that makes sense // for that particular implementation of the object. // [MethodImplAttribute(MethodImplOptions.InternalCall)] public extern virtual int GetHashCode (); // // Returns the Type associated with the object. // [MethodImplAttribute(MethodImplOptions.InternalCall)] public extern Type GetType (); // // Shallow copy of the object. // [MethodImplAttribute(MethodImplOptions.InternalCall)] protected extern object MemberwiseClone (); // // Returns a stringified representation of the object. // This is not supposed to be used for user presentation, // use Format() for that and IFormattable. // // ToString is mostly used for debugging purposes. // public virtual string ToString () { return GetType().FullName; } // // Tests whether a is equal to b. // Can not figure out why this even exists // public static bool ReferenceEquals (object a, object b) { return (a == b); } [MethodImplAttribute(MethodImplOptions.InternalCall)] internal extern IntPtr obj_address (); void FieldGetter (string typeName, string fieldName, ref object val) { /* never called */ } void FieldSetter (string typeName, string fieldName, object val) { /* never called */ } } }