如何使这个IEnumerable循环通用?

时间:2017-12-22 08:59:19

标签: c# generics

我认为这种方法可以转换为采用通用方法。然后我可以将它用于任何可枚举的类型。我如何制作这个通用的?

private bool AreAnyInteractablesInThisList(
    IEnumerable<Interactable> Interactables, 
    Interactable InteractableToCheck)
{
    foreach (var Interactable in Interactables)
    {
        if (Interactable.GetInstanceID() == InteractableToCheck.GetInstanceID()) 
            return true;
    }
    return false;
}

1 个答案:

答案 0 :(得分:3)

您需要创建一个声明plt.plot([1],[5], marker="o") 方法的界面:

GetInstanceID()

然后使用泛型参数必须实现该接口的约束使该方法通用:

public interface IInteractable
{
    int GetInstanceID(); // I guess it's an int, but you can change that accordingly
}

请注意,您可以将方法缩短为:

private bool AreAnyInteractablesInThisList<T>(IEnumerable<T> Interactables, T InteractableToCheck) where T : IInteractable
{
    foreach (var Interactable in Interactables)
    {
        if (Interactable.GetInstanceID() == InteractableToCheck.GetInstanceID()) return true;
    }
    return false;
}