c#检查对象是否是只有在运行时才知道的类型

本文关键字:类型 运行时 对象 检查 是否是 | 更新日期: 2023-09-27 18:05:24

为什么不工作?

if(!(obj is (DataGridView1.SortedColumn.ValueType)))

我得到一个错误,认为需要一个类型。ValueType不返回类型吗?

c#检查对象是否是只有在运行时才知道的类型

ValueType不是一个实际的类,对吗?这是一个返回Type的属性。所以要在运行时弄清楚这个,你需要说:

if(!(DataGridView1.SortedColumn.ValueType.IsAssignableFrom(obj.GetType())))

将代码改为

if(obj.GetType() != DataGridView1.SortedColumn.ValueType)

Edit更新修复错字的代码

不,ValueType属性是Type类的一个实例。它本身不是一种类型。

试试这个:

if (!(obj.GetType() == DataGridView1.SortedColumn.ValueType))

然而,这并不能说明obj是否是一个派生类型,所以如果你需要,你必须做得更漂亮一些。