什么是vb.net CType的c-sharp等价物?

时间:2011-03-14 04:59:17

标签: c# .net vb.net

我尝试使用谷歌搜索,并在此网站上使用搜索功能,但我找到的答案都没有回答我的问题。

在vb中,如果想要一种简单的方法将我的一个类转换为另一个自定义类,我可以定义CType运算符来定义如何从一个类转换为另一个类。然后我可以调用CType( fromObject, toNewType)来进行转换,或者在c#中我猜你可以做一个简单的演员。

但是,在c#中,您如何定义如何将实际演员从一个自定义类处理到另一个自定义类到另一个自定义类(就像使用CType运算符在vb中一样)。

4 个答案:

答案 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)objButton btn = obj as Button