从C#中的对象获取类型

时间:2010-07-29 23:38:18

标签: vb.net-to-c#

此代码有什么问题? ..

public void gett(object dato, ref object ty)
{

    dato = 1;  // <- this compiles 
    Type t = typeof(dato); //<--- here i Got an error 
    if (t == typeof(int))
    {
         ty= 1

    }
    else 
    {
        ty=""
    }

}

我收到错误“无法找到类型或命名空间名称'dato'(您是否缺少using指令或程序集引用?)”

我想把这个VB .net代码放到c#

Sub getty(ByVal dato As Object, ByRef ty As Object)

        If IsDBNull(dato) Then


            Select Case ty.GetType.FullName

                Case GetType(Integer).FullName
                    ty = 0

                Case GetType(String).FullName
                    ty = ""

                Case GetType(Guid).FullName

                    ty = New Guid("00000000-0000-0000-0000-000000000000")
                Case GetType(DateTime).FullName
                    Dim da As DateTime = New DateTime(1900, 1, 1)

                    ty = da

                Case Else
                    ty = ""
            End Select

        Else
            ty = dato


        End If

    End Sub

谢谢

2 个答案:

答案 0 :(得分:4)

typeof运算符仅适用于类型。请改为dato.GetType()

答案 1 :(得分:0)

为了扩展Mark的答案,dato不是一个类型,它是一个变量。 typeof()适用于类型(即类或结构,在本例中是对象)。

确实,您所寻求的是运行时类型识别,您可以使用dato.GetType()。