如何创建包含自定义类的静态数组?

Ben*_*Ben 1 c# asp.net

我有一个方法返回通过解析文本文件创建的自定义类对象的数组.每次我使用它的那一刻,我正在重读那个效率不高的文件.

我要做的是在页面加载时创建一个包含对象的数组,并将它们存储在一个数组中,然后可以在以后使用.

方法是:

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;
    }
Run Code Online (Sandbox Code Playgroud)

而且这个课很简单,只需:

    public class Album
{
    public int ID { get; set; }
    public string title { get; set; }
    public string keyName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我以为我可以用以下方法创建静态对象:

static Album myAlbums[] = readArray("Albums.txt");
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

字段初始值设定项不能引用非静态字段,方法或属性'B2M._Default.readArray(string)'

我是C#的新手,所以这可能是愚蠢的.(如果是这种情况,请随意向我的大方向发出乐趣!)

在此先感谢任何帮助,

Jon*_*eet 5

"错误"不是很具描述性.当您发布问题并且收到错误时,请说明错误是什么.

在这种情况下,问题是您尝试从静态上下文调用实例方法(readArray),而不指定实例.

该方法似乎不需要任何实例数据,因此您应该能够使该方法保持静态,并且一切都会很好.

我鼓励你阅读.NET命名约定,顺便说一句.您可能还想考虑使用List<T>而不是数组.当你感到更自信时,你也可以使用LINQ使这段代码变得更简单 - 但我会等到你更熟悉C#之后.