List包含一个T的性质

本文关键字:包含一 List | 更新日期: 2023-09-27 18:17:15

我得到了这个列表:

private static List<Type> _AbstractTypes = new List<Type>();

后来在我的项目中,我得到了一个对应于Type.FullName的string。问题是,我想检查我的字符串是否包含在我的列表中,但我无法避免可用的循环:(我在找这样的东西:

_AbstractTypes.FullName.Contains(myString)

我绝对知道,我以前的代码是不可编译的,但这是我寻找的那种东西!提前感谢您的帮助

List<T>包含一个T的性质

你可以使用Linq,但是我们这里只讨论无循环结构,下面的代码必须做一个循环,如果你想做得更好,你可以使用HashSet<T>

Linq代码可能是这样的:

_AbstractTypes.Any(t => t.FullName == myString);

HashSet<Type>代码可能像这样:

var types = new HashSet<Type>();
types.Add(typeof(int)); //Fill it with types
types.Add(typeof(double));
//Check by getting types from their string name, you could of course also cache those types
Console.WriteLine("Contains int: " + types.Contains(Type.GetType(intName))); //True
Console.WriteLine("Contains float: " + types.Contains(Type.GetType(floatName))); //False

代码:

bool result = _AbstractTypes.Any(t=>t.FullName == myString);

应该做这项工作。

它将针对所有类型测试谓词,直到满足一个类型(返回true),或者不满足(返回false)。

如果列表包含元素,您可以执行类似_AbstractTypes.First().GetType()的操作

您可能想要这样的内容:

_AbstractTypes.Any(t=>t.FullName.Contains(myString))

你无法避免循环。

你可以这样做(在后台循环):

bool check = _AbstractTypes.Any(item => item.FullName == myString);

我认为你可以发现一个类型是否包含在你的列表:

if (_AbstractTypes.Contains(typeof(string)))
{
    // Do Something
}
相关文章: