Редактировать
Вот другая версия кода, которая делает его немного более понятным о том, что я пытаюсь сделать:
class Program
{
static void Main(string[] args)
{
RepairCar(Car.Ferrari);
}
public static void RepairCar(Car BrokenCar)
{
switch (BrokenCar)
{
case Car.Ferrari:
Console.WriteLine("${0} of Insurance Needed", CalculateInsurance(BrokenCar));
//
// Repair Algorithm Here
//
break;
case Car.BMW:
Console.WriteLine("${0} of Insurance Needed", CalculateInsurance(BrokenCar));
//
// Repair Algorithm Here
//
break;
case Car.Audi:
Console.WriteLine("${0} of Insurance Needed", CalculateInsurance(BrokenCar));
//
// Repair Algorithm Here
//
break;
default:
Console.WriteLine("${0} of Insurance Needed", CalculateInsurance(BrokenCar));
//
// Repair Algorithm Here
//
break;
}
}
public static double CalculateInsurance(Car BrokenCar)
{
return (BrokenCar.Price / 10);
}
}
public class Car
{
public double Price;
public int MaxSpeed;
public int MinSpeed;
public Car(double Price, int MaxSpeed, int MinSpeed)
{
this.Price = Price;
this.MaxSpeed = MaxSpeed;
this.MinSpeed = MinSpeed;
}
public static Car Ferrari = new Car(100000, 250, 10);
public static Car Audi = new Car(50000, 120, 30);
public static Car BMW = new Car(35000, 80, 75);
}
Как написано, это не скомпилируетсяпотому что это не позволит мне переключить BrokenCar в методе RepairCar.Любые предложения?
Исходное сообщение
Я пытаюсь создать объект, который может хранить статические свойства и, что более важно, иметь возможность переключения - вот пример -
class Program
{
static void Main(string[] args)
{
Console.WriteLine(GetMaxSpeed(Car.Ferrari));
Console.ReadLine();
}
public static int GetMaxSpeed(Car ModelType)
{
switch (ModelType)
{
case Car.Ferrari:
return Car.Ferrari.MaxSpeed;
case Car.VW:
return Car.VW.MaxSpeed;
case Car.AstonMartin:
return Car.AstonMartin.MaxSpeed;
}
}
public class Car
{
public int MinSpeed;
public int MaxSpeed;
public Car(int MinSpeed, int MaxSpeed)
{
this.MinSpeed = MinSpeed;
this.MaxSpeed = MaxSpeed;
}
public static Car Ferrari = new Car(30, 240);
public static Car VW = new Car(10, 50);
public static Car AstonMartin = new Car(75, 180);
}
}
У кого-нибудь есть идеи?
Спасибо заранее!
Уильям
РЕДАКТИРОВАТЬ
В этом примере описывается более крупная и сложная система.Чтобы проиллюстрировать, почему мне нужно сделать это таким образом, посмотрите следующее обновление:
public static void OnCarSale(Car CarSold)
{
double LuxuryTax = 75;
switch (CarSold)
{
case Car.Ferrari:
Console.WriteLine("Total Price: {0}", Car.Ferrari.Price + LuxuryTax);
break;
case Car.VW:
Console.WriteLine("Total Price: {0}", Car.VW);
break;
case Car.AstonMartin:
Console.WriteLine("Total Price: {0}", Car.Ferrari.Price + LuxuryTax);
break;
}
}
Это будет вызвано событием вне этого класса -