//
// 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 */
}
}
}