Conversion Operators
C# converts int to long implicitly, and allows you to convert long to int explicitly. The conversion from int to long is implicit (it happens without requiring any special syntax), and is safe because you know that any int will fit into the memory representation of a long. The reverse operation, from long to int, must be explicit (using a cast operator) because it is possible to lose information in the conversion:
int myInt = 5; long myLong; myLong = myInt; // implicit myInt = (int) myLong; // explicit
You will want to provide the same functionality for your fractions. Given an int, you can support an implicit conversion to a fraction because any whole value is equal to that value over 1 (e.g., 15==15/1).
Given a fraction, you might want to provide an explicit conversion back to an integer, understanding that some value might be lost. Thus, you might convert 9/4 to the integer value 2.
When implementing your own conversions, the keyword implicit is used when the conversion is guaranteed to succeed and no information will be lost; otherwise, explicit is used.
Tip
Make sure to use implicit whenever you don't use explicit!
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access