c# - 是否可以将具有不同泛型/类型的对象列表作为参数

标签 c# generics

考虑以下代码:

class Collision<type1, type2> 
{
    // further Code
}

是否有可能(例如)LinkedList<>它有一个通用的 Collision作为它的参数?换句话说:我能以某种方式实现 LinkedList<> 吗?哪个接受Collision对象会各种参数?

public LinkedList< Collision<Unit, Unit> > collisionList = new LinkedList< Collision<Unit,Unit> >();

在这种方法中,我使用了基类 Unit作为两个子类的替代PlayerEnemy .但我也有一个类 Environment这不是子类,但也应该是 Collision 的可能参数.

提前致谢!

最佳答案

一种方法是使用接口(interface):

interface ICollision
{
    object PropertyOfType1{get;}
    object PropertyOfType2{get;}
}

然后是从该接口(interface)继承的通用类:

class Collision<type1,type2>:ICollision
{
    public type1 PropertyOfType1 {get;set;}
    public type2 PropertyOfType2 {get;set;}

    object ICollision.PropertyOfType1
    {
        get{return PropertyOfType1;}
    }

    object ICollision.PropertyOfType2
    {
        get{return PropertyOfType2;}
    }
}

然后您可以使用该界面创建链表:

LinkedList<ICollision> collisionList  = new LinkedList<ICollision>();

collisionList.AddLast(new Collision<int,int>());
collisionList.AddLast(new Collision<double,double>());

关于c# - 是否可以将具有不同泛型/类型的对象列表作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23659020/

相关文章:

c# - 为所有列表框创建样式

c# - C# 中泛型类型的命名空间范围别名

java - 具有相同删除的两种方法不一定是等效的(或者它们之间的签名不是子签名)?

java - 警告 ArrayList 是原始类型。应参数化对泛型类型 ArrayList<E> 的引用

c# - 比较实现 IComparable 的项目时出现问题

c# - 在新的 Windows 10 CalendarView 上显示/设计额外信息

c# - 读取类型和成员的自定义属性声明

c# - Xaml.Controls.TextBox 中字符的文本换行

c# - JSON反序列化器继承泛型类型

c# - 并行循环内的局部变量线程安全