The implicit
and explicit
keywords in C# are used when declaring conversion operators. Let's say that you have the following class:
public class Role
{
public string Name { get; set; }
}
If you want to create a new Role
and assign a Name
to it, you will typically do it like this:
Role role = new Role();
role.Name = "RoleName";
Since it has only one property, it would perhaps be convenient if we could instead do it like this:
Role role = "RoleName";
This means that we want to implicitly convert a string to a Role
(since there is no specific cast involved in the code). To achieve this, we add an implicit conversion operator:
public static implicit operator Role(string roleName)
{
return new Role() { Name = roleName };
}
Another option is to implement an explicit conversion operator:
public static explicit operator Role(string roleName)
{
return new Role() { Name = roleName };
}
In this case, we cannot implicitly convert a string to a Role
, but we need to cast it in our code:
Role r = (Role)"RoleName";
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…