如何在排序列表中按键存储对象?
How can I store an object by key in a sorted list?
我有两个 class。
一个 class 是类型
的对象
public class Taksi
{
public int num;
public string brand;
public string FIO;
public double mileage;
// Here i missed get and setters
public Taksi(int newNum, string newBrand, string newFio, double Mileage)
{
this.brand = newBrand;
this.FIO = newFio;
this.mileage = Mileage;
this.num = newNum;
}
}
而第二个 class 存储一个排序列表,如 SortedList Park {get; }
public class sortedList : FileEvent, Gride
{
SortedList<int, object> Park { get; }
public sortedList()
{
Park = new SortedList<int, object>();
}
}
在 class sortedList FileEvent.scanFile 中的函数中(字符串路径文件)
我用键和 Taxi 对象填充排序列表。
在这一行 Park.Add(Int32.Parse(dataArray[0]), newTaksi);
void FileEvent.scanFile(string pathFile)
{
Taksi newTaksi;
IEnumerable<string> lines = Enumerable.Empty<string>();
try
{
lines = File.ReadLines(pathFile);
}
catch (Exception e)
{
MessageBox.Show("Exception when opening file: " + e);
}
foreach (var line in lines)
{
try
{
string[] dataArray = line.Split('|');
newTaksi = new Taksi(Int32.Parse(dataArray[0]),
dataArray[1],
dataArray[2],
double.Parse(dataArray[3]));
Park.Add(Int32.Parse(dataArray[0]), newTaksi);
}
catch (Exception e)
{
MessageBox.Show("Exception when parsing file: " + e);
}
}
}
** 如何从排序列表中取回出租车对象和对象中的数据?**
使用 SortedList<int, Taksi>
而不是 SortedList<int, object>
。如果您在此处指定了正确的类型,列表就会知道它包含的对象类型,并且您可以以正确的类型访问它们。
为了从列表中按编号获取 taksi,您可以使用 TryGetValue
方法:
if(Park.TryGetValue(42, out Taksi myTaksi))
{
// Number 42 was in the list and you can use it here as myTaksi
}
else
{
// There is no taxi with number 42 in the list
}
如果您确定某个号码在列表中,您可以使用方括号访问它:
Taksi no42 = Park[42];
为了遍历列表中的所有对象:
foreach(Taksi taksi in Park.Values)
{
// Do something with taksi
}
或者,如果您想访问该对象以及它在列表中添加的编号:
foreach(var pair in Park)
{
// pair.Key is the number
// pair.Value is the Taksi object
}
我有两个 class。 一个 class 是类型
的对象public class Taksi
{
public int num;
public string brand;
public string FIO;
public double mileage;
// Here i missed get and setters
public Taksi(int newNum, string newBrand, string newFio, double Mileage)
{
this.brand = newBrand;
this.FIO = newFio;
this.mileage = Mileage;
this.num = newNum;
}
}
而第二个 class 存储一个排序列表,如 SortedList
public class sortedList : FileEvent, Gride
{
SortedList<int, object> Park { get; }
public sortedList()
{
Park = new SortedList<int, object>();
}
}
在 class sortedList FileEvent.scanFile 中的函数中(字符串路径文件) 我用键和 Taxi 对象填充排序列表。 在这一行 Park.Add(Int32.Parse(dataArray[0]), newTaksi);
void FileEvent.scanFile(string pathFile)
{
Taksi newTaksi;
IEnumerable<string> lines = Enumerable.Empty<string>();
try
{
lines = File.ReadLines(pathFile);
}
catch (Exception e)
{
MessageBox.Show("Exception when opening file: " + e);
}
foreach (var line in lines)
{
try
{
string[] dataArray = line.Split('|');
newTaksi = new Taksi(Int32.Parse(dataArray[0]),
dataArray[1],
dataArray[2],
double.Parse(dataArray[3]));
Park.Add(Int32.Parse(dataArray[0]), newTaksi);
}
catch (Exception e)
{
MessageBox.Show("Exception when parsing file: " + e);
}
}
}
** 如何从排序列表中取回出租车对象和对象中的数据?**
使用 SortedList<int, Taksi>
而不是 SortedList<int, object>
。如果您在此处指定了正确的类型,列表就会知道它包含的对象类型,并且您可以以正确的类型访问它们。
为了从列表中按编号获取 taksi,您可以使用 TryGetValue
方法:
if(Park.TryGetValue(42, out Taksi myTaksi))
{
// Number 42 was in the list and you can use it here as myTaksi
}
else
{
// There is no taxi with number 42 in the list
}
如果您确定某个号码在列表中,您可以使用方括号访问它:
Taksi no42 = Park[42];
为了遍历列表中的所有对象:
foreach(Taksi taksi in Park.Values)
{
// Do something with taksi
}
或者,如果您想访问该对象以及它在列表中添加的编号:
foreach(var pair in Park)
{
// pair.Key is the number
// pair.Value is the Taksi object
}