我正在为学校做作业,它涉及创建一个对如何创建它的某些限制的应用程序。比如有一定数量的方法。我想在发布看起来没有优化的代码之前我会说,并且可以用更少的方法完成。
无论如何,目前我有一个Northwind类,它处理来自数据库的所有内容,在这种情况下,创建一个填充Shipper对象的列表,然后我使用另一个Northwind方法将其转换为队列。 (这就是我未经优化的意思,我可以从一开始就使用队列,但我不允许这样做。)但是,当我使用它时,它会出现一个非常常见的错误。但我无法弄清楚为什么......
class Northwind
{
public Queue<Shipper> Queue { get; set; }
public List<Shipper> GetList()
{
var con = new SqlConnection("Data Source=DESKTOP-G5VBFCN;Initial Catalog=Northwind;Integrated Security=True");
var cmd = new SqlCommand("SELECT CompanyName, Phone FROM Shippers",con);
con.Open();
var reader = cmd.ExecuteReader();
var ShipList = new List<Shipper>();
while (reader.Read())
{
var s = new Shipper
{
CompanyName = reader["CompanyName"].ToString(),
Phone = reader["Phone"].ToString()
};
ShipList.Add(s);
}
con.Close();
return ShipList;
}
public Queue<Shipper> GetQueue(List<Shipper> List)
{
Queue<Shipper> ShipperQueue = new Queue<Shipper>(List);
return ShipperQueue;
}
}
}
我在Form1.cs中使用该类
public partial class Form1 : Form
{
Northwind db;
Shipper Shipper;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
db.Queue = db.GetQueue(db.GetList());
}
请注意Northwind数据库;实际上是绿色下划线。我刚开始学习OOP。感谢您花时间查看我的代码。
答案 0 :(得分:1)
Northwind db = new Northwind();
或者让这个类保持静态,你不需要自己初始化。
static class Northwind
{
public static Queue<Shipper> Queue { get; set; }
public static List<Shipper> GetList()
{
var con = new SqlConnection("Data Source=DESKTOP-G5VBFCN;Initial Catalog=Northwind;Integrated Security=True");
var cmd = new SqlCommand("SELECT CompanyName, Phone FROM Shippers",con);
con.Open();
var reader = cmd.ExecuteReader();
var ShipList = new List<Shipper>();
while (reader.Read())
{
var s = new Shipper
{
CompanyName = reader["CompanyName"].ToString(),
Phone = reader["Phone"].ToString()
};
ShipList.Add(s);
}
con.Close();
return ShipList;
}
public static Queue<Shipper> GetQueue(List<Shipper> List)
{
Queue<Shipper> ShipperQueue = new Queue<Shipper>(List);
return ShipperQueue;
}
}
并调用
private void Form1_Load(object sender, EventArgs e)
{
Northwind.Queue = Northwind.GetQueue(Northwind.GetList());
}