我尝试使用谷歌搜索,并在此网站上使用搜索功能,但我找到的答案都没有回答我的问题。
在vb中,如果想要一种简单的方法将我的一个类转换为另一个自定义类,我可以定义CType
运算符来定义如何从一个类转换为另一个类。然后我可以调用CType( fromObject, toNewType)
来进行转换,或者在c#中我猜你可以做一个简单的演员。
但是,在c#中,您如何定义如何将实际演员从一个自定义类处理到另一个自定义类到另一个自定义类(就像使用CType
运算符在vb中一样)。
答案 0 :(得分:9)
您可以使用explicit关键字
定义自定义广告public static explicit operator TargetClass(SourceClass sc)
{
return new TargetClass(...)
}
......但考虑不这样做。它会让那些必须维护你的软件的人感到困惑。相反,只需为目标类定义构造函数,将源类的实例作为参数:
public TargetClass(SourceClass sc)
{
// your conversions
}
答案 1 :(得分:2)
我想你想要explicit operator
来自msdn的例子:
// Must be defined inside a class called Farenheit:
public static explicit operator Celsius(Fahrenheit f)
{
return new Celsius((5.0f / 9.0f) * (f.degrees - 32));
}
Fahrenheit f = new Fahrenheit(100.0f);
Console.Write("{0} fahrenheit", f.Degrees);
Celsius c = (Celsius)f;
答案 2 :(得分:1)
您要做的是重载课程上的Cast operators。
答案 3 :(得分:0)
如果您没有任何特定的转化代码,System.Convert
方法最接近VB中的CType
。否则,可以根据一些例子看出它:
VB.Net
Dim btn As Button = CType(obj,Button)
C#等价物:
Button btn = (Button)obj
或Button btn = obj as Button