Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 要检查的传入类型_C#_Generics_Types - Fatal编程技术网

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的事实告诉我,你还没有真正了解它们的用法,但它们是如此的普遍,以至于你基本上只是需要它们,迟早。