gpt4 book ai didi

c# - 检查对象是否与给定列表中的任何类型匹配的替代方法

转载 作者:太空狗 更新时间:2023-10-30 00:24:56 26 4
gpt4 key购买 nike

if (this.Page is ArticlePage|| this.Page is ArticleListPage)
{
//Do something fantastic
}

上面的代码有效,但考虑到可能有许多不同的类,我想将 this.Page 与之进行比较,我想将这些类存储在一个列表中,然后执行.Contains() 在列表中。

我将如何实现这一目标?我会以某种方式使用 GetType() 吗?我可以存储一个 Page 对象列表,然后以某种方式比较类型吗?

注意:您可以假定我正在比较 this.Page 的所有类都可以扩展 Page

最佳答案

这段代码将完成这项工作:

HashSet<Type> knownTypes = new HashSet<Type>()
{
typeof(ArticlePage),
typeof(ArticleListPage),
// ... etc.
};

if (knownTypes.Contains(this.Page.GetType())
{
//Do something fantastic
}

编辑:正如 Chris 所指出的,您可能需要考虑类型继承以完全模仿 is 运算符的行为。这有点慢,但对于某些目的可能更有用:

Type[] knownTypes = new Type[] 
{
typeof(ArticlePage),
typeof(ArticleListPage),
// ... etc.
};

var pageType = this.Page.GetType();
if (knownTypes.Any(x => x.IsAssignableFrom(pageType)))
{
//Do something fantastic
}

关于c# - 检查对象是否与给定列表中的任何类型匹配的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20333634/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com