Overriding explicit and implicit conversion in C# .NET
April 21, 2015 3 Comments
Custom implicit and explicit conversions for numeric types can be defined in C# quite easily. You need to be aware of the “implicit”, “explicit” and “operator” keywords.
Consider the following class:
public class Measurement { public int Value { get; set; } }
Say you want to be able to convert an integer to a Measurement object and vice versa. You can extend the Measurement class as follows:
public static implicit operator Measurement(int value) { return new Measurement() { Value = value }; } public static explicit operator int(Measurement m) { return m.Value; }
This is how you can convert an integer to a Measurement object:
int value = 30; Measurement measurement = value;
That’s right, you can simply assign the integer to a measurement object, its Value property will be 30.
Here’s how you can convert a Measurement object to an integer:
Measurement m = new Measurement() { Value = 15 }; int val = (int)m;
“val” will be 15 as expected.
View all various C# language feature related posts here.
Wow! I did not know that this is possible! Cool!
Reblogged this on jogendra@.net.
Reblogged this on Tech Mania.