List包含一个T的性质
本文关键字:包含一 List | 更新日期: 2023-09-27 18:17:15
我得到了这个列表:
private static List<Type> _AbstractTypes = new List<Type>();
后来在我的项目中,我得到了一个对应于Type.FullName的string
。问题是,我想检查我的字符串是否包含在我的列表中,但我无法避免可用的循环:(我在找这样的东西:
_AbstractTypes.FullName.Contains(myString)
我绝对知道,我以前的代码是不可编译的,但这是我寻找的那种东西!提前感谢您的帮助
你可以使用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
}