空引用,学习 OOP
本文关键字:OOP 学习 引用 | 更新日期: 2023-09-27 18:31:26
我正在为学校做作业,它涉及创建一个应用程序,对如何创建它有一定的限制。例如具有一定数量的方法。我想我会在发布看起来未优化的代码之前说,实际上可以用更少的方法完成。
无论如何,目前我有一个 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 db; 实际上是用绿色下划线的。我刚开始学习OOP。感谢您抽出宝贵时间查看我的代码。
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());
}