Previous topicNext topic
Help > 开发指南 > 编程基础 > 数据转换 >
TryCast_Vs_as

我们在对引用类型的数据类型进行转换时,为了不在转换过程中报错,如果遇到转换失败的话,就直接返回Nothing(C#语言返回null)。满足这种需求的主要有下面两个,一个是Vb中的TryCast,另外一个是C#中的as运算符。

这种运算符使用的前提条件是,两种数据类型必须有继承或实现关系。如果不存在这样的关系,在编译阶段就会报错。

语言 运算符
Vb.Net TryCast
C# as

按实现关系转换成相应的接口。

 VB.Net
Function PrintTypeCode(ByVal obj As Object) As String
    Dim objAsConvertible As IConvertible = TryCast(obj, IConvertible)
    If objAsConvertible Is Nothing Then
        Return obj.ToString() & " does not implement IConvertible"
    Else
        Return "Type code is " & objAsConvertible.GetTypeCode()
    End If
End Function

 C#
public string PrintTypeCode(object obj)
{
    IConvertible objAsConvertible = obj as IConvertible;
    if (objAsConvertible == null)
        return obj.ToString() + " does not implement IConvertible";
    else
        return "Type code is " + objAsConvertible.GetTypeCode();
}

按继承关系转换成相应的类。

 VB.Net
Dim tbl As SmGrid=TryCast(Proj.CurrentGrid,SmGrid)
If tbl IsNot Nothing Then
    MessageBox.Show(tbl.Name)
Else
    MessageBox.Show("当前表为空")
End If

 C#
SmGrid tbl = Proj.CurrentGrid as SmGrid;
if (tbl != null)
    MessageBox.Show(tbl.Name);
else
    MessageBox.Show("当前表为空");