gpt4 book ai didi

C# - 将 'object' 参数转换为该对象的类型?

转载 作者:太空狗 更新时间:2023-10-29 22:02:25 24 4
gpt4 key购买 nike

C#

大家好

我将对象传递给方法。

我想将该对象转换为它的特定类以便我可以执行它自己的特定方法?我该怎么做?

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();
}

你获得了几样东西:

  1. 您只能为实现该接口(interface)的对象调用Move(ICanMove objectThatMoves)。如果您尝试传递不同的对象,您的程序将无法编译。
  2. 你失去了条件语句。如果您决定向您的程序中添加实现 ICanMoveDog,则 Move 方法无需任何修改即可正常工作。在您的版本中,您必须更改方法。

想象一下,如果您的程序中到处都是 is 语句,您会有多少工作量?

关于C# - 将 'object' 参数转换为该对象的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1666496/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com