我有一个解析文本文件的方法,并根据解析的结果定义并填充大约12个数组。我需要访问方法之外的那些数组。
现在,如果它是一个数组,我只是返回数组。但它有12个阵列。
我无法在方法之外定义数组,因为在运行解析文本文件的方法之前我不知道维度,这告诉我arrrays中有多少元素。
我可以返回一个巨大的List<>我认为所有这些数组都是如此,但这看起来非常糟糕。
任何人都有任何想法如何做到这一点?
答案 0 :(得分:3)
要直接回答你的问题,说实话,它似乎完全没问题,也不差。正如你在评论中所说,只是让你的方法做这样的事情。我假设您有12个string
数组:
public List<string[]> GetStuffFromTextFile(File file){
// Use your favorite file reader to get an array. Some pseudo-code here.
// I don't know how you'll get the data.
string[] array1 = GetSomeDataFromFile1(file);
string[] array2 = GetSomeDataFromFile2(file);
string[] array3 = GetSomeDataFromFile3(file);
string[] array4 = GetSomeDataFromFile4(file);
string[] array5 = GetSomeDataFromFile5(file);
string[] array6 = GetSomeDataFromFile6(file);
string[] array7 = GetSomeDataFromFile7(file);
string[] array8 = GetSomeDataFromFile8(file);
string[] array9 = GetSomeDataFromFile9(file);
string[] array10 = GetSomeDataFromFile10(file);
string[] array11 = GetSomeDataFromFile11(file);
string[] array12 = GetSomeDataFromFile12(file);
return new List<string[]>{array1,array2,array3,array4,array5,array6,array7,array8,array9,array10,array11,array12}
};
从维护角度来看,这看起来非常糟糕,因为明天可能会有13个阵列,在这种情况下,你应该使用一个循环来收集所有单个数组并将它们放在List<string[]>
中。
在我看来,你应该创建一个从方法返回的类。
public class FileData{
string[] array1 {get; set;}
//...
string[] array12 {get; set;}
}
在课外的某个地方,可能在你的方法中,你只需这样做:
public FileData GetStuffFromTextFile(File file){
FileData fileData = new FileData();
fileData.array1 = GetSomeDataFromFile1(file);
\\ ...
return fileData;
}