我需要一个可以与字符串属性一起使用的类,以将数据存储在结构化的(类)列表上,但是具有相同的类型,以便有一种方法可以返回索引,该索引充当我设置数据的顺序。 / p>
该类可以是这样的:
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字段不适用于索引,但是我不知道它是否有帮助,或者这是否是更好的编程选择。
我不确定是否有更好的方法,但是会收到相关反馈非常欢迎。
答案 0 :(得分:2)
要从一个函数返回两种不同的类型,可以使用introduce in C# 7.3
它是这样的:
public (int, string) MyFunc()
{
//do something
return (VarThatInt, VarThatString);
}
//and in main class u call it like this:
(varInt, varString) = MyFunc();
答案 1 :(得分:1)
使用KeyValuePair存储一个属性和索引,使用KeyValuePair列表存储一行,并使用dic字典存储文件。
List<int> orderIndexList = new List<int> { 2, 1, 4, 0 };
Dictionary<int, List<KeyValuePair<int, string>>> data = new Dictionary<int, List<KeyValuePair<int, string>>>();
int lineNumber = 0;
foreach (var line in simpleData)
{
var lineSplit = line.Split('\t');
List<KeyValuePair<int, string>> listLine = new List<KeyValuePair<int, string>>();
orderIndexList.ForEach(index => listLine.Add(new KeyValuePair<int, string>(index, lineSplit[index])));
data.Add(++lineNumber, listLine);
}
return data;
答案 2 :(得分:0)
返回一个具有两个所需输出的类。您甚至可以返回第三个变量来告诉接收代码,以使用哪个输出。
public myClass{
String TextValue;
int NumberValue;
bool IsReturnString;
}
您将返回myClass
的对象。