C# 每次调用方法时,列表都会被初始化

C# 每次调用方法时,列表都会被初始化,c#,C#,我是C#的新手。我有一个表单,有两个文本字段、一个按钮和一个数据网格视图。我试图将数据传递到业务逻辑层(BLL)并从那里传递到数据逻辑层(DAL),然后将其添加到列表中,并将列表返回到表单中,并显示在数据网格视图中。问题是每次我添加新记录时,以前的记录都会消失。看起来列表中的上一个条目已被覆盖。我已与debug一起检查,列表中的计数保持为1。谢谢 下面是我如何从表单调用BLL方法以在数据网格上显示: BLL_Customer bc = new BLL_Customer(); dgvC

我是C#的新手。我有一个表单,有两个文本字段、一个按钮和一个数据网格视图。我试图将数据传递到业务逻辑层(BLL)并从那里传递到数据逻辑层(DAL),然后将其添加到列表中,并将列表返回到表单中,并显示在数据网格视图中。问题是每次我添加新记录时,以前的记录都会消失。看起来列表中的上一个条目已被覆盖。我已与debug一起检查,列表中的计数保持为1。谢谢

下面是我如何从表单调用BLL方法以在数据网格上显示:

   BLL_Customer bc = new BLL_Customer();
   dgvCustomer.DataSource = bc.BLL_Record_Customer(cust);
这是BLL中的班级

 namespace BLL
 {
     public class BLL_Customer
     {

         public List<Customer> BLL_Record_Customer(Customer cr)
         {
             DAL_Customer dcust = new DAL_Customer();
             List<Customer> clist = dcust.DAL_Record_Customer(cr); 
             return clist;  // Reurning List
         }
     }

 }
名称空间BLL
{
公共类BLL_客户
{
公共列表BLL_记录_客户(客户cr)
{
DAL_客户dcust=新的DAL_客户();
List clist=dcust.DAL\u Record\u Customer(cr);
return clist;//重新创建列表
}
}
}
这是DAL的课程:

namespace DAL
 {

     public class DAL_Customer

     {
         List<Customer> clist = new List<Customer>();
         public List<Customer> DAL_Record_Customer(Customer cr)
         {
             clist.Add(cr);
             return clist;
         }
     }
 }
DAL名称空间
{
公共类DAL_客户
{
List clist=新列表();
公共列表数据记录客户(客户cr)
{
clist.Add(cr);
返回clist;
}
}
}

每次尝试添加新记录时,您都在创建类实例。请确保任何类中只存在一个类实例。在函数外部创建类实例

BLL_Customer bc = new BLL_Customer();


DAL_Customer dcust = new DAL_Customer();

下面是正在发生的事情:

BLL_Customer bd = new BLL_Customer(); // Lets call this BLL_Customer #1
dgvCustomer.DataSource = bc.BLL_Record_Customer(cust); // Does what you expect
再次调用此代码时:

BLL_Customer bd = new BLL_Customer(); // Lets call this BLL_Customer #2
旧列表和客户信息存储在BLL#U customer#1中。参考
bd
不再指向#1,而是指向#2。为了用代码解释这一点,我可以这样澄清:

var bd = new BLL_Customer().BLL_Record_Customer(cust); // A List<Customer> 
bd = new BLL_Customer().BLL_Record_Customer(cust); // A new List<Customer>
var bd=new BLL_Customer().BLL_Record_Customer(cust);//单子
bd=新的BLL_客户().BLL_记录_客户(cust);//新名单
旁注: 每次在应用程序中首次使用类
DAL_Customer
,您的
List
将被初始化为一个新值—在您的示例中是
new List()


如果您没有以某种方式将有关
客户的信息持久化,无论是通过文件、数据库还是其他方式,每次加载应用程序时,您都会遇到一个新的
列表

你在哪里保存你的阴蒂?因为事实上,每次初始化
DAL_Customer
,都会得到一个新的空clist。