我使用下一个脚本制作了一个列表:
private void Skills_Button_Click(object sender, RoutedEventArgs e)
{
...
var dict = JsonConvert.DeserializeObject<Dictionary<string, Item>>(Database);
List<String> Item_Name = new List<String>();
List<double> Sell_Price = new List<double>();
List<double> Buy_Price = new List<double>();
foreach (string key in dict.Keys)
{
Item_Name.Add(dict[key].name);
Sell_Price.Add(Convert.ToDouble(dict[key].sell_average));
Buy_Price.Add(Convert.ToDouble(dict[key].buy_average));
}
}
然后,我创建了一个方法:
public double S(string name, List<String> Item_Name, List<double> Sell_Price)
{
int ind = Item_Name.FindIndex(s=> s==name);
double SP = Sell_Price[ind];
return SP;
}
最后,我想在另一种方法中使用此方法(当在wpf中按下按钮时),但是我收到一个错误,即该类中未知列表Item_Name,Sell_Price,Buy_Price
。 / p>
如何让它们成为其他课程的“全球”?
我在这里找到的所有答案都说明了创建的新列表。
谢谢。
答案 0 :(得分:0)
首先,我将属性包装到单个模型中。 请注意,我使用decimal
而不是double
,因为这是处理货币时的建议。
public sealed class ItemModel
{
public ItemModel(string itemName, decimal sellPrice, decimal buyPrice)
{
ItemName = itemName;
SellPrice = sellPrice;
BuyPrice = buyPrice;
}
public string ItemName { get; }
public decimal SellPrice { get; }
public decimal BuyPrice { get; }
}
然后我会设计我的班级,让一个可枚举的成员存储结果
class WhateverYourClassIsCalled
{
private IEnumerable<ItemModel> items;
private void Skills_Button_Click(object sender, RoutedEventArgs e)
{
items = GetItems();
}
private IEnumerable<ItemModel> GetItems()
{
IReadOnlyDictionary<string, Item> dictionary = JsonConvert
.DeserializeObject<Dictionary<string, Item>>(database);
foreach (KeyValuePair<string, Item> item in dictionary)
{
yield return new ItemModel(
itemName: item.Key,
sellPrice: item.Value.sell_average,
buyPrice: item.Value.buy_average);
}
}
// You called this method, "S", which is a poor name!
private decimal GetSellPrice(string itemName)
{
// Notice that SingleOrDefault here might be null, so have a think about how you want to handle that.
return items
.SingleOrDefault(item => item.ItemName == itemName)
.SellPrice;
}
}
<强>优点强>
items
而不是Item_Name
,Sell_Price
和Buy_Price
)。< / LI>
items
成员是安全的,因为您无法添加,删除或清除该集合。您只能迭代它或重新分配它。ItemModel
是不可变的,这在大多数案例中都是件好事。答案 1 :(得分:-1)
在这种情况下,你将它提取到一个公共方法,它返回所有这些数据,如下所示,并在需要的地方调用它
public Tuple<List<String>, List<Double>, List<Double>> GetEventData(Database db)
{
var dict = JsonConvert.DeserializeObject<Dictionary<string, Item>>(db);
List<String> Item_Name = new List<String>();
List<double> Sell_Price = new List<double>();
List<double> Buy_Price = new List<double>();
foreach (string key in dict.Keys)
{
Item_Name.Add(dict[key].name);
Sell_Price.Add(Convert.ToDouble(dict[key].sell_average));
Buy_Price.Add(Convert.ToDouble(dict[key].buy_average));
}
Tuple t = Tuple.Create(Item_Name, Sell_Price, Buy_Price);
return t;
}