在C#中,如果我有一个从另一个对象继承的对象,并且我有一个继承对象的列表,我怎么能在基类中调用一个函数?
以下是一个例子:
class testObject
{
public void testFunction()
{
}
}
class testObject2 : testObject
{
public void testFunction()
{
}
}
以下是清单:
List<testObject> testObjects
如果我在列表中添加了一些testObject2
个对象,如何为每个testFunction
对象调用function
testObject2
?如果我尝试为每个对象调用testFunction
,则会调用testFunction
中的testObject
。
修改
将覆盖代码添加到testFunction
中的testObject2
时,我收到此错误:
无法覆盖继承的成员,因为它未标记为虚拟, 摘要或覆盖
答案 0 :(得分:1)
class testObject
{
public virtual void testFunction()
{
}
}
class testObject2 : testObject
{
public override void testFunction()
{
}
}
您需要将virtual
添加到testObject类中的方法,并将override
添加到testObject2中。如果你想为现有逻辑添加一点逻辑,你可以这样做:
public override void testFunction()
{
//it is calling the method in base
base.testFunction();
//here you can add more logic if you want.
}
如果你想要完全独立的方法,你只需要做其他事情
public override void testFunction()
{
//write another logic.
}
答案 1 :(得分:0)
要启用多态功能,您必须将该功能声明为virtual
或abstract
,然后将override
声明为子类
class testObject
{
public virtual void testFunction()
{
}
}
class testObject2 : testObject
{
public override void testFunction()
{
}
}
答案 2 :(得分:0)
班级定义:
class testObject
{
public string s;
public virtual void testFunction()
{
string b = s;
}
}
class testObject2 : testObject
{
public string m;
public override void testFunction()
{
string x = m;
}
}
函数调用:
List<testObject> testObjects = new List<testObject>();
testObjects.Add(new testObject2() { m = "a" });
testObjects[0].testFunction();