C#
Hi all,
我将一个对象传递给一个方法。
我想将该对象转换为它的特定类,以便我可以执行它自己的特定方法?我怎样才能做到这一点?
Move( new Cat() );
Move( new Pigeon() );
public void Move(object objectToMove)
{
if(objectToMove== Cat)
{
Cat catObject = objectToMove as Cat;
catObject.Walk();
}
else if(objectToMove== Pigeon)
{
Rat pigeonObject = objectToMove as Pigeon;
pigeonObject.Fly();
}
}
正确的方法是:
public interface ICanMove
{
void Move();
}
由 Cat 和 Pigeon 实现:
public class Cat : ICanMove
{
public void Move() { /* do something */ }
}
public class Pigeon : ICanMove
{
public void Move() { /* do something */ }
}
然后这样称呼它:
public void Move(ICanMove objectThatMoves)
{
objectThatMoves.Move();
}
你会收获几样东西:
- 您只能致电
Move(ICanMove objectThatMoves)
对于实现该接口的对象。如果您尝试传递不同的对象,您的程序将无法编译。
- 你失去了条件语句。如果您决定添加
Dog
它实现了ICanMove
对于您的程序,Move 方法无需任何修改即可正常工作。在您的版本中,您将必须更改方法。
想象一下,如果你有的话,你会有多少工作量is
你的程序中到处都有语句吗?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)