给同一个数据参数相同的实例

我有一个具有这种结构的文本文件:

{A, B, C, D} {B, E, D} {C, A, F} ...... 

第一行表示起始位置,其他行表示目的地。 例如:

 A -> B, C, D B -> E, D C -> A, F 

我有一个名为Location的基本类,我保存所有的位置和目的地。

 Location locA = new Location(); Location locB = new Location(); 

我有兴趣使用相同的实例位置而不为每个人创建一个新实例,例如:

 Connection(locA, locB)); Connection(locA, locC)); Connection(locA, locD)); Connection(locB, locE); 

问题是当我分割我的文本文件时。 我把第一行放在列表中。 和目的地在另一个列表中。 :

 DKLocations Startloc = new DKLocations(); DKLocations Destloc = new DKLocations(); List DKLocations = new List(); 

这是我的代码所以票价:

  foreach (var line in File.ReadLines(@"routes.txt")) { foreach (Match oMatch in Regex.Matches(line, @"\{([^,]*)")) { ComboBox1.Items.Add(oMatch.Groups[1].Value); Startloc.Identifier = DKLocations.Count().ToString(); Startloc.LocationName.Add(oMatch.Groups[1].Value); DKLocations.Add(Startloc); var dest = Regex.Matches(line, @"\p{L}+") .Cast() .Skip(1) .Select(match => match.Value) .ToList(); var price = Regex.Matches(line, @"\d+") .Cast() .Select(match => match.Value) .ToList(); var destAndPrice = dest.Zip(price, (d, p) => new { dest = d, price = p }); foreach (var i in destAndPrice) { ListBox1.Items.Add(oMatch.Groups[1].Value + " to " + i.dest + " " + i.price + " kr." + DKLocations.Count().ToString()); } } 

分割时如何将目的地相同的实例作为起始位置?

听起来你想要“记忆”模式。

在C#中,这通常用字典完成。 例如:

 Dictionary memos = new Dictionary(); 

然后在阅读数据时,首先检查字典:

 Location location; if (!memos.TryGetValue(locationId, out location)) { location = new Location(locationId); memos[locationId] = location; } // do stuff with location now 

主要的是有一种方法来识别您想要的Location实例,然后将其用作字典中的键。