我有一个方法,它返回一个通过解析文本文件创建的自定义类对象数组。目前我每次使用它时都会重新读取效率不高的文件。
我要做的是在页面加载时创建一个包含对象的数组,并将它们存储在一个数组中,然后可以在以后使用。
方法是:
public Album[] readArray(string sTextFilePath)
{
string[] allLines = File.ReadAllLines(Server.MapPath(sTextFilePath));
Album[] Albums = new Album[allLines.Length];
for (int i = 0; i < allLines.Length; i++)
{
string[] lineSplit = allLines[i].Split(',');
Albums[i] = new Album();
Albums[i].ID = Convert.ToInt32(lineSplit[0]);
Albums[i].title = lineSplit[1];
Albums[i].keyName = lineSplit[2];
}
return Albums;
}
并且课程很简单,只需:
public class Album
{
public int ID { get; set; }
public string title { get; set; }
public string keyName { get; set; }
}
我以为我可以使用以下内容创建静态对象:
static Album myAlbums[] = readArray("Albums.txt");
但是我收到以下错误:
字段初始值设定项无法引用非静态字段,方法或属性'B2M._Default.readArray(string)'
我是C#的新手,所以这可能是愚蠢的。 (如果是这种情况,请随意向我的大方向发出乐趣!)
提前感谢您的任何帮助,
本
答案 0 :(得分:5)
“错误”不是很具描述性。当您发布问题并且收到错误时,请说明错误是什么。
在这种情况下,问题是您尝试从静态上下文调用实例方法(readArray
),而不指定实例。
该方法似乎不需要任何实例数据,因此您应该能够使方法保持静态,并且一切都会很好。
我建议您阅读.NET命名约定,顺便说一句。您可能还想考虑使用List<T>
而不是数组。当你感到更自信时,你也可以使用LINQ使这段代码变得更简单 - 但我会等到你对C#更熟悉。
答案 1 :(得分:0)
除静态上下文外,不应该是:
static Album[] myAlbums = readArray("Albums.txt");