【发布时间】:2018-12-15 12:18:09
【问题描述】:
我需要一个可以与字符串属性一起使用的类,以将数据存储在结构化(类)列表中,但在同一类型的列表中,我需要一种方法来返回一个索引,该索引作为我设置数据所需的顺序。
类可以是这样的:
public class MyClass
{
public int int1 = 0;
public int int2 = 0;
public int int3 = 0;
public int int4 = 0;
public string string1 { get; set; }
public string string2 { get; set; }
public string string3 { get; set; }
public string string4 { get; set; }
}
然后我可以使用我的类以类结构化格式存储数据:
string fileName = @"C:\Mylocation\MyTextFileToRead.txt"; //tab delimeted file
Encoding fileEncoding = Encoding.ASCII;
List<MyClass> myDataList = new List<MyClass>();
List<string> simpleData = File.ReadAllLines(fileName, fileEncoding).ToList();
MyClass index = new MyClass();
foreach (var line in simpleData)
{
var lineSplit = line.Split('\t');
MyClass myClassElement = new MyClass
{
string1 = lineSplit[index.int1],
string2 = lineSplit[index.int2],
string3 = lineSplit[index.int3],
string4 = lineSplit[index.int4],
};
myDataList.Add(myClassElement);
}
我使用索引来映射文本文件中的每个属性,然后将每个字段值存储在相应的字符串属性中。
我不希望使用对象类型并具有返回字符串值并将其转换为索引的 (int) 的属性。我被建议不要尽可能多地使用对象。 除非我使用类的类型名称(而不是类的实例),否则 Const 字段的使用对索引不起作用,但我不知道它是否有帮助或者这是否是一个更好的编程选项。
我不确定是否有更好的方法来做到这一点,但非常欢迎提供相关反馈。
【问题讨论】:
-
对我来说这感觉不对,您的课程与您的文件无关,所以您为什么要存储订单,我不明白这有什么关系。从您的示例中,您只需要读取文件时的顺序。
-
文本文件具有我知道顺序的属性,索引是我知道拆分后需要去哪个字段的人。顺序是关键。
-
你没有得到好的建议,总是避免字符串输入。当文件结构发生变化时,您必须更改类声明是正常的和预期的。无论如何,当您使用字符串输入时,您已经进行了更改,它们将更难正确。
-
仍然没有意义。如果您的文本文件知道顺序,则您的班级不需要知道它。只需将正确的数据推送到类的属性,也许您可以显示您的文件数据?
-
对于每个字符串 -> prop1 + '\t' + prop2+ '\t' + prop3+ '\t' + prop4 但是如何设置拆分顺序?