2015-06-15 4 views
0

У меня есть два класса: consumableItems.cs и items.cs Так в основном, все, что нужно сделать, это наследуют свойства items.cs в consumableItems.csC# Вопросы относительно списков?

Вот что я сделал до сих пор:

class Item 
{ 
    public List<string> itemNames = new List<string>(); 
    public List<int> itemEffects = new List<int>(); 
} 


class consumableItems : Item 
{ 
    new public List<string> itemNames = new List<string>() { "Apple", "Orange", "Grapes" }; 
    new public List<int> itemEffects = new List<int>() { 15, 30, 40 }; 
} 

Что я хочу достичь, всякий раз, когда я печатаю «Яблоко», в окне консоли отображаются как «Apple», так и «15»; то же самое, когда я набираю «Оранжевый», в окне консоли отображаются «Оранжевый» и «30». Есть идеи? Извините, только что началось программирование на C#, и я теряюсь. >< О, и последний вопрос, как я правильно наследую? :/ Благодаря.^^

+2

Почему не 'Расходуемый' элемент с свойством' Имя' и 'Эффекты'? И сохраните его в 'List '? – Sinatr

+0

Можете ли вы опубликовать всю свою программу? (вы ссылаетесь на «когда я печатаю Apple», но мы не видим, чтобы ваш код обрабатывал вход в консоль. – plukich

+0

снова прочитайте Inharitance и его приложения :) – Zia

ответ

1

Если вы только начинаете с C#, то что насчет перехода из списка в Dictionnary?

Словарь даст вам то, что вы хотите.

С двумя списками вам нужно перебрать первый, чтобы найти индекс, а затем получить доступ ко второму списку с индексом. Будьте осторожны с Исключением в этом случае.

Что касается наследования, то вы должны проверить (общественные | частные | Etc ...) и, возможно, ищет интерфейсы и абстрактные

0

Я предлагаю вам определить класс

class Item { 
    public string Name { get; set;} 
    public int Effect { get; set;} 
} 

И затем использовать single List < Пункт> вместо того, чтобы пытаться отобразить между двумя списками. Вы можете переопределить метод ToString() этого класса для вывода Консоли.

1

Вы изобретаете колесо и делаете жизнь тяжелой. Просто используйте словарь:

var items = new Dictionary<string, int> 
{ 
    { "Apple", 15 }, 
    { "Orange", 30 }, 
    { "Grapes", 40 } 
}; 

Console.WriteLine("Apple = {0}", items["Apple"]); 
0

Используйте словарь, как в примере ниже:

class Program2 
    { 
     class ConsumableItems 
     { 
      new public List<string> itemNames = new List<string>() { "Apple", "Orange", "Grapes" }; 
      new public List<int> itemEffects = new List<int>() { 15, 30, 40 }; 

      public Dictionary<string, int> values = new Dictionary<string, int>() 
      { 
       {"Apple", 15}, 
       {"Orange", 30}, 
       {"Grapes", 40} 
      }; 
     } 

     static void Main() 
     { 
      ConsumableItems items = new ConsumableItems(); 

      string key = Console.ReadLine(); 

      Console.WriteLine("\n\n\n"); 

      Console.WriteLine(key + " " + items.values[key]); 

      Console.ReadKey(); 
     } 
    } 

enter image description here

+0

Можете ли вы опубликовать источник кода в виде * текста *, пожалуйста? Или нам понадобится новый вариант модерации. * Image only answer * = D – Sinatr

+0

Обновлен мой ответ.Но имейте в виду, что ключ DITIONAR является CASE SENSITIVE, поэтому, если вы наберете «яблоко», то не будет выбрано исключение «Apple»; вы можете рассмотреть возможность использования прописных букв в ваших словарных клавишах и метода .ToUpper() на вашем пользовательском вводе для принудительного прописного ввода. smth вроде string key = Console.ReadKey(). ToUpper(); – Fabjan

0

Вы можете использовать словарь вместо списка,

public Dictionary<string, int> FruitValues = new Dictionary<string, int>() 
      { 
       {"Apple", 15}, 
       {"Orange", 30}, 
       {"Grapes", 40} 
      }; 

Console.WriteLine("Apple Value is {0}", FruitValues["Apple"]); 
0

Та же проблема бизнеса может легко решить с помощью любой коллекции пары Key-Value. Я имею в виду использование словаря например:

public Dictionary<string, int> FruitsEffect= new Dictionary<string, int>() 
FruitsEffect.Add("FruitsName",25); 

Словарь содержит пары ключей и значений. Словарь используется с различными элементами. Мы указываем его тип ключа и его тип значения (строка, int). Заполните словарь и получите значение по ключу.

Смежные вопросы