强制转换自定义类型
本文关键字:类型 自定义 转换 | 更新日期: 2023-09-27 17:49:01
我正在研究一个自定义结构体,我想给它从另一种类型隐式创建的能力。
假设我有两个结构体类型。Color和ColorX,其中Color是框架中已经存在的结构体,我不能更改。
使用隐式运算符,能够说例如。
Color C;
ColorX CX;
CX = new ColorX();
C = CX;
然而,我也希望能够用另一种方式来做。要么是直接设定,要么是制作演员。两者都能做到是件好事。例如,
C = new Color();
CX = C;
或者像这样转换:
CX = (ColorX)C;
考虑c#中所有其他有用的操作符,我确信有一种方法可以做到这一点,我只是找不到语法。
任何帮助都非常感谢!非常感谢。
您可以使用c#中的隐式操作符:
public static implicit operator ColorX(Color original)
{
return new ColorX(original);
}
不能将两个不相关的类型相互强制转换。
我将创建一个扩展名medpublic static class ColorExtensions
{
public static ColorX AsColorX(this Color c)
{
return new ColorC(c);
}
}
能够调用
Color c = new Color();
ColorX cx = c.AsColorX();