C#初始化列表

时间:2014-05-21 12:17:37

标签: c# list

在哪里可以初始化List以让其他函数知道它存在,因此Visual Studio不会显示任何错误。目前它看起来像这样:

    namespace ConsoleApplication1
{

  public class BazaDanych
    {

   public class Album
   {
       public int IDNumber { get; set; }
       public string AlbumName { get; set; }
       public string Artist { get; set; }
       public int ReleaseDate { get; set; }
       public int TrackAmount { get; set; }
       public string Location { get; set; }
       public int Rating { get; set; }

       public Album(int _id, string _name, string _artist, int _releasedate, int _trackamount, string _location, int _rating)
       {
           IDNumber = _id;
           AlbumName = _name;
           Artist = _artist;
           ReleaseDate = _releasedate;
           TrackAmount = _trackamount;
           Location = _location;
           Rating = _rating;
       }
   }

   static int currid = 1;
   public void addnew()
   {
       int ID = currid;
       if (ID == 1);
       List<Album> AlbumsList = new List<Album>();
    //useless for this question
   }

   public void printlist()
   {
       foreach ( int i in AlbumsList)
       {
           Console.WriteLine(i);
       }
   }


    static void Main(string[] args)
    {
        var db = new BazaDanych();
        //useless  
        db.addnew();
        db.addnew();



    }

}

} Visual Studio尖叫,打印函数中不存在AlbumsList。

3 个答案:

答案 0 :(得分:0)

您在addnew()方法中声明了AlbymsList。这意味着它只在该方法中可见。你需要在任何方法之外声明它。

答案 1 :(得分:0)

它应该是一个类成员/属性:

public class BazaDanych
{
   private List<Album> AlbumsList = new List<Album>();
   ....
}

答案 2 :(得分:0)

首先,将Album的类定义移到类BazaDanych之外,理想情况下为它创建一个单独的类文件,但这也可以使用

namespace ConsoleApplication1
{
   public class Album
   {
     //Album logic
   }

  public class BazaDanych
    {
    //Baza logic
    }
}

其次,正如Amiros所述,将定义从addNew方法移到类(BazaDanych)中,并在AddNew

中使用此引用
public class BazaDanych
{
    private List<Album> AlbumsList = new List<Album>();
    public void AddNew()
    {
        AlbumsList.Add(new Album(...));
    }
}