考虑以下代码:
class Collision<type1, type2>
{
// further Code
}
是否有可能(例如)LinkedList<>
它有一个通用的 Collision
作为它的参数?换句话说:我能以某种方式实现 LinkedList<>
吗?哪个接受Collision对象会各种参数?
public LinkedList< Collision<Unit, Unit> > collisionList = new LinkedList< Collision<Unit,Unit> >();
在这种方法中,我使用了基类 Unit
作为两个子类的替代Player
和 Enemy
.但我也有一个类 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/