关于列表的C#问题?

时间:2015-06-15 13:04:29

标签: c#

我有两个类:consumableItems.cs和items.cs 基本上,我所要做的就是将items.cs的属性继承到consumableItems.cs

这是我到目前为止所做的事情:

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

我想要实现的是,无论何时键入&#34; Apple&#34;,控制台窗口都会显示&#34; Apple&#34;和&#34; 15&#34 ;;当我输入&#34; Orange&#34;时,控制台窗口同时显示&#34; Orange&#34;和&#34; 30&#34;。有任何想法吗?对不起,刚开始进行C#编程,我迷路了。 &GT; &LT;哦,最后一个问题,我继承的方式是正确的吗? :/ 谢谢。 ^ ^

6 个答案:

答案 0 :(得分:1)

如果您刚开始使用C#,那么从List更改为Dictionnary会怎样?

字典会给你你想要的东西。

使用两个列表,您必须遍历第一个列表以查找索引,然后使用索引访问第二个列表。在这种情况下要小心Exception。

关于继承,你应该检查(public | private | Etc ...),然后查找Interfaces和Abstract

答案 1 :(得分:1)

你正在重新发明轮子,让生活变得艰难。只需使用字典:

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

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

答案 2 :(得分:0)

我建议你定义一个类

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

然后使用单个List&lt; Item&gt;而不是试图在两个列表之间映射。您可以为控制台输出覆盖类的ToString()方法。

答案 3 :(得分: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

答案 4 :(得分:0)

您可以使用Dictionary而不是List,

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

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

答案 5 :(得分:0)

使用Key-Value对的任何集合都可以轻松解决相同的业务问题。我的意思是使用字典:

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

字典具有键和值对。字典用于不同的元素。我们指定其键类型及其值类型(string,int)。 填充字典并按键获取值。