public static void myMethod(Object myObject)
{
}
我的对象是SportCar类型。如何创建新对象(像这样的东西)
SportCart sportCar = myObject as SportCar
稍后编辑:我不知道myObject的类型是什么。它可能是SimpleCar,AbcCar等
答案 0 :(得分:4)
这通常是您使用界面的地方。在你的情况下,myMethod
必须使用传入的参数做一些特定的事情。让我们举一个简单的例子;说myMethod
负责启动汽车,你会定义一个界面,如
public interface ICar
{
void Start()
}
然后myMethod
的参数类型为ICar
,而不是object
。
public void myMethod(ICar car)
{
car.Start();
}
现在mymethod
不需要知道(或关心!!)所呈现的ICar
,无论是AbcCar,SportsCar等,只要该类实现ICar
public class SportsCar : ICar
{
public void Start()
{
Console.WriteLine("Vroom Vroom. SportsCar has started");
}
}
public class AbcCar : ICar
{
public void Start()
{
Console.WriteLine("Chug Chug. AbcCar has started");
}
}
答案 1 :(得分:1)
听起来你想要两件事之一。要么具有基类Car
,要么具有汽车拥有的所有共享行为的接口ICar,然后您可以执行此操作:
ICar car = myObjectAsCar;
car.Drive(Speed.VeryFast);
或者,你想要做不同的事情,这取决于它是什么类型的汽车:
if (SportCar sporty = myObject as SportCar)
{
sporty.Drive(Speed.VeryFast);
}
if (HybridCar hybrid = myObject as HybridCar)
{
hybrid.Drive(Speed.Economical);
}
答案 2 :(得分:0)
汽车类是否有一个共同类型,你只想投射到那个:。
BaseCar baseCar = myObject as BaseCar;
或者您是先尝试检查类型,然后转换为正确的类型,即:
if(myObject is SimpleCar)
{
var simpleCar = myObject as SimpleCar;
}
如果你想做第二次,我强烈建议你使用第一种。如果您使用的是第一辆汽车,则无需担心汽车的类型。