explicit 和 implicit 属于转换运算符,如用这两者可以让我们自定义的类型支持相互交换
explicti 表示显式转换,如从 B -> A 必须进行强制类型转换(B = (B)A)
implicit 表示隐式转换,如从 A -> B 只需直接赋值(B = A)
class Program
...{
static void Main(string[] args)
...{
B b = new A();
Console.Write(b.Value + " ");
A a = (A)new B();
Console.Write(" " + a.Value);
}
}
class A
...{
//字段
private string value;
//属性
public string Value
...{
get ...{ return this.value; }
set ...{ this.value = value; }
}
//构造器
public A(string value)
...{
this.value = value;
}
public A()
...{ }
//转换运算符之隐式转换(B=A)
public static implicit operator B(A a)
...{
return new B("A实例隐式转换成了B实例");
}
}
class B
...{
//字段
private string value;
//属性
public string Value
...{
get ...{ return this.value; }
set ...{ this.value = value; }
}
//构造器
public B(string value)
...{
this.value = value;
}
public B()
...{ }
//转换运算符之显示转换(A = (A)B)
public static explicit operator A(B a)
...{
return new A("B实例显示转换成了A实例");
}
}
本文介绍了C#中显式explicit和隐式implicit转换运算符的使用方法,并通过具体示例代码展示了如何实现自定义类型的相互转换。
1703

被折叠的 条评论
为什么被折叠?



