【问题标题】:Getting type from an object in C#从 C# 中的对象获取类型
【发布时间】:2010-07-29 23:38:17
【问题描述】:

这段代码有什么问题? ..

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

谢谢

【问题讨论】:

    标签: vb.net-to-c#


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      实际上,您需要的是运行时类型识别,您可以通过 dato.GetType() 获得。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-26
        • 1970-01-01
        • 1970-01-01
        • 2012-08-30
        • 2017-09-19
        相关资源
        最近更新 更多