use of operator overloading of implicit & explicit operators?

Answer Posted / karthikeyant

Implicit:

By eliminating unnecessary casts, implicit conversions can
improve source code readability. However, because implicit
conversions can occur without the programmer's specifying
them, care must be taken to prevent unpleasant surprises.
In general, implicit conversion operators should never
throw exceptions and never lose information so that they
can be used safely without the programmer's awareness. If a
conversion operator cannot meet those criteria, it should
be marked explicit.

class MyType
{
public static implicit operator int(MyType m)
{
// code to convert from MyType to int
}
}

MyType x;
// implicitly call MyType's MyType-to-int conversion
operator
int i = x;

Explicit:
declares a user-defined type conversion operator that must
be invoked with a cast. For example, this operator converts
from a class called Fahrenheit to a class called Celsius:

// Must be defined inside a class called Farenheit:
public static explicit operator Celsius(Farenheit f)
{
return new Celsius((5.0f/9.0f)*(f.degrees-32));
}

Farenheit f = new Farenheit(100.0f);
Celsius c = (Celsius)f;

Is This Answer Correct ?    3 Yes 0 No



Post New Answer       View All Answers


Please Help Members By Posting Answers For Below Questions

Is array passed by reference in c#?

512


Can you put two constructor with the same structure in a class?

483


What is array and types of array in c#?

475


What is dll hell, and how does .net solve it?

533


Explain the three test cases in unit testing?

594






Explain how do I get deterministic finalization in c#?

465


Name the connections does microsoft sql server support?

481


Can you prevent a class from being instantiated?

592


What Happens In Memory When You Box And Unbox A Value-type?

468


What are assemblies?

539


Explain how is the dll hell problem solved in .net?

459


When should I use static in C#?

554


How long has c# been around?

561


What is an array class?

518


what is IFormatable

576