强制转换自定义类型

本文关键字:类型 自定义 转换 | 更新日期: 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);
}

不能将两个不相关的类型相互强制转换。

我将创建一个扩展名med
public static class ColorExtensions 
{
   public static ColorX AsColorX(this Color c)
   {
       return new ColorC(c);
   }
}

能够调用

Color c = new Color();
ColorX cx = c.AsColorX();