[英]Pass in Type to check against
我有一种方法,正在检查循环中的当前对象是否与传递给该方法的类型相同。
首先,我将类型作为字符串传递给方法,然后使用:
item.GetType().ToString().Equals(myType);
我真正想做的是使用is
关键字来做:
item is myType
我遇到的问题是将myType
传递给方法。 我是否需要使用某种时髦的泛型类型? 我将类型的引用传递为哪种类型?
您可以使用普通的等于运算符:
item.GetType() == myType;
如果item是myType描述的确切类型,则将返回true
。 请注意,如果有任何区别,它将返回false
:
class A { }
class B : A { }
B item = new B();
Type myType = typeof(A);
bool sameType = item.GetType() == myType; // this will be false
表示
Type
对象是唯一的; 也就是说,两个Type
对象引用在且仅当它们表示相同类型时才引用同一对象。 这允许使用引用相等性比较Type
对象。
您的意思是:
public List<T> GetItemsOfType<T>(List<object> allObjects)
{
return allObjects.Where(o => o is T).Cast<T>().ToList();
}
然后你会用类似的东西打电话给你
var result = GetItemsOfType<MyType>(myObjects);
是这样吗
public static bool ContainsType<T>()
{
object[] objects = new object[] { };
foreach (var o in objects)
{
if (o is T)
{
return true;
}
}
return false;
}
public static void Main(string[] args)
{
ContainsType<int>();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.