overloading conversion operators

Top  Previous  Next

New features since Delphi 7 > Operator Overloading > conversion operators

 

 

A class may be converted into another type:

 

 

class operator TMyClass.Implicit(a: TMyClass): Integer;

var

  myint : integer;

begin

  myint:= a.payload;

  Result:= myint;

end;

 

 

This becomes in C# to:

 

 

public static implicit operator int (TMyClass a)

{

  int result = 0;

  int myint = 0;

  myint = a.payload;

  result = myint;

  return result;

}

 

 

If the other way round another type is converted to the class::

 

 

class operator TMyClass.Implicit(a: Integer): TMyClass;

var

  returnrec : TMyClass;

begin

  returnrec.payload:= a;

  Result:= returnrec;

end;

 

 

this becomes to:

 

 

public static implicit operator TMyClass (int a)

{

  TMyClass result = TMyClass.CreateRecord();

  TMyClass returnrec = TMyClass.CreateRecord();

  returnrec.payload = a;

  result = returnrec;

  return result;

}

 

 

 

For explicit operators:

 

class operator TMyClass.explicit(a: TMyClass): double;

var

  b : double;

begin

  b:= a.payload;

  Result:= b;

end;

 

->

 

public static explicit operator double (TMyClass a)

{

  double result = 0.0D;

  double b = 0.0D;

  b = (double) a.payload;

  result = b;

  return result;

}

 

 

 

class operator TOperatorClass.explicit(a: TOperatorClass): boolean;

begin

  Result:= True;

end;

 

->

 

public static explicit operator bool (TOperatorClass a)

{

  bool result = false;

  result = true;

  return result;

}

 

 

 

 

 

 

 

 

 

 

 

 



This page belongs to the Delphi2C# Documentation

Delphi2C# home  Content