OK. Мне удалось сжать все до 2 вопросов:C# OOP Задачи задачи
1/Является ли общедоступным enum должно быть в классе или вне его? Я думаю, они оба работали, но есть ли хорошая практика?
2/Я не понимаю, как создать конструктор, который имеет объект из другого класса. См. Комментарий в нижней части «Основной» класс.
GSM КЛАСС:
using System.Text;
class GSM
{
public string model;
public string manufacturer;
public decimal price;
public string owner;
Battery battery = new Battery("Nokia", 7, 5);
Display display = new Display(12.5, 3);
// CONSTRUCTORS:
public GSM(string model, string manufacturer, decimal price, string owner)
{
this.model = model;
this.manufacturer = manufacturer;
this.price = price;
this.owner = owner;
}
public GSM(string model, string manufacturer, decimal price, string owner, Battery battery, Display display)
: this(model, manufacturer, price, owner)
{
this.battery = battery;
this.display = display;
}
}
БАТАРЕИ
public enum BatteryType // Is this suppose to be here or inside the class?
{
LiIon, LiPo, NiMH, NiCd
}
class Battery
{
//battery characteristics
private string model;
private int hoursIdle;
private int hoursTalk;
private BatteryType batteryType = new BatteryType();
}
====== DISPLAY
class Display
{
//display characteristics
private double size;
private int numberOfColors;
// CONSTRUCTORS:
public Display(double size, int numberOfColors)
{
this.size = size;
this.numberOfColors = numberOfColors;
}
}
==== MAIN:
class GSMTest
{
public static void Main()
{
GSM myGSM = new GSM("Sony ERcs", "Sony ERRR", 124.56m, "Pesho", BatteryType.LiPo, 12.3);
// I can't create this object. Argument5: cannont convert from GSM.BatteryType to GSM.Battery. What gives!?
// Display has 2 fields. I have an instance of it in GSM. Yet I don't know how to set it here so I can create myGSM
}
}
P.S. Все они из одного и того же пространства имен; И есть конструктор для класса Battery. Забыл включить его, не знаю, если это необходимо.
Мы не собираемся анализировать весь код. Создайте небольшой образец, который воспроизводит проблему, с которой вы сталкиваетесь, и опишите проблему в одном вопросе для каждой проблемы, поделившись своими исследованиями по этой конкретной проблеме. – CodeCaster
Спасибо! Я позаботился об этом. – Bruno
Ваш GSM-конструктор ожидает экземпляр класса Battery, а не перечисление типа BatteryType. Вы должны создать экземпляр батареи и передать ссылку на этот экземпляр в вызове конструктора. То же самое происходит и с параметром Display.Вам нужен экземпляр Диска, чтобы передать туда не плавающее число – Steve