C# 要检查的传入类型
我有一个方法,我在其中检查循环中的当前对象是否与传入该方法的类型相同 首先,我将类型作为字符串传递到方法中,然后使用:C# 要检查的传入类型,c#,generics,types,C#,Generics,Types,我有一个方法,我在其中检查循环中的当前对象是否与传入该方法的类型相同 首先,我将类型作为字符串传递到方法中,然后使用: item.GetType().ToString().Equals(myType); 我真正喜欢做的是使用is关键字: item is myType 我遇到的问题是将myType传递给该方法。我需要使用一些时髦的泛型类型还是什么?我将引用传递给类型作为什么类型?您可以使用普通相等运算符: item.GetType() == myType; 如果项目与myType描述的类型完
item.GetType().ToString().Equals(myType);
我真正喜欢做的是使用is
关键字:
item is myType
我遇到的问题是将
myType
传递给该方法。我需要使用一些时髦的泛型类型还是什么?我将引用传递给类型作为什么类型?您可以使用普通相等运算符:
item.GetType() == myType;
如果项目与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
对象
是独一无二的;即,两个类型
对象
引用引用同一对象,如果
只有当它们代表相同的
类型。这样就可以比较
使用引用等式键入对象
你是说:
public List<T> GetItemsOfType<T>(List<object> allObjects)
{
return allObjects.Where(o => o is T).Cast<T>().ToList();
}
public List getItemSoftType(列出所有对象)
{
返回allObjects.Where(o=>o是T.Cast().ToList();
}
然后你会打电话给他
var result = GetItemsOfType<MyType>(myObjects);
var result=GetItemsOfType(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>();
}
公共静态bool ContainsType()
{
对象[]对象=新对象[]{};
foreach(对象中的var o)
{
if(o是T)
{
返回true;
}
}
返回false;
}
公共静态void Main(字符串[]args)
{
ContainsType();
}
我建议您只学习泛型,它将极大地帮助您。你称它们为funky的事实告诉我,你还没有真正了解它们的用法,但它们是如此的普遍,以至于你基本上只是需要它们,迟早。