C#检查对象是否仅在运行时已知类型

Bar*_*uch 1 .net c# reflection

以下为什么不工作?

if(!(obj is (DataGridView1.SortedColumn.ValueType)))
Run Code Online (Sandbox Code Playgroud)

我得到一个预期类型的​​错误.ValueType不返回类型吗?

Str*_*ior 9

ValueType不是真正的课,对吗?这是一个返回的属性Type.所以要在运行时计算出来,你需要说:

if(!(DataGridView1.SortedColumn.ValueType.IsAssignableFrom(obj.GetType())))
Run Code Online (Sandbox Code Playgroud)


Sco*_*son 5

将您的代码更改为

if(obj.GetType() != DataGridView1.SortedColumn.ValueType)
Run Code Online (Sandbox Code Playgroud)

编辑更新的代码以修复拼写错误