c# - 通过方法传入类型时如何使用 'is'?

标签 c# syntax

我正在尝试将一个类型传递给一个方法,在该方法中我可以检查它是否"is"某种类型。但是我下面的代码无法编译,我想知道出了什么问题。编译错误是:找不到类型或命名空间名称“dataType”。

public static List<object> findType(Type dataType)
{
    List<object> items = new List<object>();
    foreach (KeyValuePair<int, object> entry in DataSource.ItemPairs)
    {
        if (entry.Value != null && entry.Value is dataType)
        {
            items.Add(entry.Value);
        }
    }
    return items;
}

最佳答案

is 运算符需要一个类型名称,而不是 Type 实例。因此应该在编译时知道该类型。

但是您可以使用 IsAssignableFrom 方法来检查类型是否兼容:

if (entry.Value != null && dataType.IsAssignableFrom(entry.Value.GetType())

关于c# - 通过方法传入类型时如何使用 'is'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27795406/

相关文章:

c# - ASP.NET Core 2.1 中的 UseStaticFiles、UseSpaStaticFiles 和 UseSpa 有什么区别?

c# - 在 SQLite 数据库中放置和检索图像

c# - 如何在本地存储中创建、存储和访问 fileopen picker 的图像

java - 扩展 Java 语法(卫生宏)的最简单方法是什么

c# - TabItem 标题垂直

c# - 如何使用证书而不是密码进行身份验证?

Ruby 语法,在符号中使用数字?

if-statement - 没有 `else` 的 Julia 三元运算符

bash - Bash shell 中的 ${var}、 "$var"和 "${var}"之间有什么区别?