Dus*_*san 1 c# csv list while-loop
我有这个代码:
public List<CsvUserData> CsvUserList = new List<CsvUserData>();
public CsvUserData()
{
readCSV(@"C:\userdata.csv");
}
public string CSVEmailEditText { get; set; }
public string CSVNameEditText { get; set; }
public string CSVAddressEditText { get; set; }
public string CSVPostnumEditText { get; set; }
public string CSVCityEditText { get; set; }
public string CSVPhoneEditText { get; set; }
public string CSVCommentEditText { get; set; }
public string SelectPage { get; set; }
private void readCSV(string location)
{
var reader = new StreamReader(File.OpenRead(location));
string line;
string[] values;
while (!reader.EndOfStream)
{
line = reader.ReadLine();
values = line.Split(',');
CsvUserList.Add
(
new CsvUserData
{
CSVEmailEditText = values[0],
CSVNameEditText = values[1],
CSVAddressEditText = values[2],
CSVPostnumEditText = values[3],
CSVCityEditText = values[4],
CSVPhoneEditText = values[5],
}
);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试将csv文件读入由命名对象组成的列表中,CsvUserData上面显示了类定义.一旦类被实例化,我的程序就会进入无限循环,最终在stackoverflow列表内存已满时导致异常,即使我的csv文件只有一行数据.有人可以帮助我解释为什么会这样吗?
让我们来看看:
CsvUserData对象,调用构造函数.readCSV(@"C:\userdata.csv");readCSV:打开文件,迭代线.new CsvUserData { … }所以,你最终创建新CsvUserData的对象内的的构造CsvUserData类型.所以这将永远重复.
您可能打算将readCSV方法设置为静态或其他内容,并且只调用一次.实际上没有理由从构造函数中调用它.并且构造函数不应该真正打开文件并根据文件创建东西; 这对构造函数来说太过分了.
| 归档时间: |
|
| 查看次数: |
169 次 |
| 最近记录: |