Define Implicit and Explicit Operator - C# Tips
C# allows us to define Implicit and Explicit operators. Unlike casting Implicit and Explicit operators defines how C# should behave when encountering an equals sign.
Implicit operator execution can be invoked when assigning a variable or calling a method.
To use Explicit operator we should do the same as casting an object. It's similar to a cast an object.
public record class Email(string Value)
{
//define implicit operator
public static implicit operator string(Email value)
=> value.Value;
//define implicit operator
public static implicit operator byte[](Email value)
=> Encoding.UTF8.GetBytes(value.Value);
//define explict operator
public static explicit operator Email(string value)
=> new Email(value);
}
To define a implicit/explicit we need to make use of "operator", "implicit" or "explicit" keywords.
The following example demonstrates the use of both operators.
Email email = new("[email protected]");
//use implicit operator. This is not a cast
string stringEmail = email;
Email secondEmail = (Email)stringEmail;
//output [email protected]
System.Console.WriteLine(stringEmail);
System.Console.WriteLine(secondEmail.Value.ToString());
The explicit conversion is similar to a cast operation. We make visible the type to which we will convert the object. The implicit operator is less visible and difficult to understand if you don’t know that it exists.
❤️ Enjoy this article?
Forward to a friend and let them know.