2015-06-15 68 views
0

我有兩個類:consumableItems.cs和items.cs 所以基本上,所有我需要做的就是繼承items.cs的屬性consumableItems.cs有關列表的C#問題?

這是我迄今所做的:

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」,控制檯窗口都顯示「Apple」和「15」;當我輸入「橙色」時,控制檯窗口同時顯示「橙色」和「30」。有任何想法嗎?對不起,剛剛開始C#編程,我迷路了。 ><哦,還有最後一個問題,我繼承的方式是否正確? :/ 謝謝。^^

+2

爲什麼沒有屬性'消費品'Name和'Effects'?並將其存儲在'List '中? – Sinatr

+0

你可以發佈你的整個程序嗎? (你參考「當我鍵入蘋果」,但我們沒有看到你的代碼來處理控制檯輸入。 – plukich

+0

請再次閱讀Inharitance及其應用程序:) – Zia

回答

1

如果您剛剛開始使用C#那麼從List更改爲Dictionnary如何?

一個詞典會給你你想要的。

有了兩個列表,您必須遍歷第一個列表以查找索引,然後使用索引訪問第二個列表。在這種情況下要小心Exception。

關於繼承,你應該檢查(公共|民營|等...),也許尋找接口和抽象

0

我建議你定義一個類

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

,然後使用單個列表< Item>而不是嘗試在兩個列表之間進行映射。您可以重寫Console輸出的類的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

您能否將代碼資源作爲*文本*發佈?或者我們需要一個新的審覈選項*圖片只回答* = D – Sinatr

+0

更新了我的答案。但請注意,DIctionary鍵是CASE SENSITIVE,因此如果您輸入「apple」而不是「Apple」,則會拋出異常;你可能會考慮在字典鍵中使用大寫字母,在用戶輸入中使用.ToUpper()方法強制使用大寫字母。像string鍵一樣= 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

相同的業務問題可以很容易通過使用鍵值對的任何集合來解決..我的意思是使用字典如:

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

該字典具有鍵和值對。字典與不同的元素一起使用。我們指定它的鍵類型和它的值類型(string,int)。 填充字典並通過鍵獲取值。