3

我正在研究一个自定义结构,我想让它能够从另一种类型隐式创建。

假设我有两种结构类型。Color 和 ColorX,其中 Color 是框架中已经存在的结构,我无法更改。

使用隐式运算符,例如可以说。

Color C;
ColorX CX;
CX = new ColorX();
C = CX;

但是,我也希望能够以相反的方式做到这一点。要么直接设置它,要么进行强制转换。能够做到这两点将是黄金。例如。

C = new Color();
CX = C;

或像这样投射:

CX = (ColorX)C;

考虑 C# 中所有其他有用的运算符,我确信有办法做到这一点,我只是找不到语法。

任何帮助是极大的赞赏!非常感谢你。

4

2 回答 2

5

您可以使用C# 中的隐式运算符执行此操作:

public static implicit operator ColorX(Color original)
{
     return new ColorX(original);
}
于 2012-12-20T09:55:49.123 回答
0

您不能将两种不相关的类型相互转换。

我会创建一个扩展医学

public static class ColorExtensions 
{
   public static ColorX AsColorX(this Color c)
   {
       return new ColorC(c);
   }
}

能够调用

Color c = new Color();
ColorX cx = c.AsColorX();
于 2012-12-20T09:59:42.037 回答