What is conversion operator in C Sharp?
A conversion operator in C # is an operator used to declare a conversion for a custom type so that an object of that type can be converted to or from another custom type or base type. The two different types of custom conversions include implicit and explicit conversions.
In general, explicit and implicit conversion operators provide the ability of a class to be converted to the other possible data types.
An explicit conversion operator must be called with a cast and is used when the conversion must be visible to the operator's users. It is used in representation expressions where the two data types are not fully compatible and therefore require a representation operator.
An implicit conversion operator is easy to use. It does not require any special syntax and improves the readability of the code. It also helps a class to convert data of a data type without type casting to a compatible type. Implicit casting must be used in situations such as function member calls and assignments where there is no risk of data loss or exceptions.
An implicit conversion can be defined for a class with the keyword 'implicit' together with the keyword 'operator'. An explicit conversion operation can be defined for a class using the keyword 'explicit' together with the keyword 'operator'. Both conversions must be defined as static.
For example, a class, RomanNumeral, can be defined with two conversion operators. An implicit conversion operator can be defined to convert the RomanNumeral class to a string to display a number in the form of a Roman numeral; The explicit conversion operator can be defined to perform the conversion from the RomanNumeral class to Integer.
The conversion of a class into an object type or an interface type is not permitted. The same applies to the conversion from the Base class into a class derived from the base class.
For a particular class, the explicit and implicit operators cannot be specified for the conversion from the same type to another type.
Care should be taken to ensure that an implicit conversion does not result in data loss or an exception. If there are valid reasons for an exception to be thrown, the conversion should be of the explicit type.