此代码有什么问题? ..
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
谢谢
答案 0 :(得分:4)
typeof
运算符仅适用于类型。请改为dato.GetType()
。
答案 1 :(得分:0)
为了扩展Mark的答案,dato不是一个类型,它是一个变量。 typeof()适用于类型(即类或结构,在本例中是对象)。
确实,您所寻求的是运行时类型识别,您可以使用dato.GetType()。