![](/img/trans.png)
[英]C#; having trouble passing a variable by reference into a generic linked list
[英]Having trouble passing list as argument in c#
我在尝试将列表作为参数传递时遇到问题。 我不确定我做错了什么。 在下面,我有一个 AssociatedTexts 列表,我使用 addBook 函数将其添加到 Books 列表中。 正在选择的 AssociatedTexts 不会被保存并分配给 Books 列表中的特定列表项。
Book dictionary = new Book(ID, textBox1.Text, Product.AssociatedTexts);
Inventory.addBook(dictionary);
addBook 函数如下所示:
public static void addBook(Book dictionary)
{
Books.Add(dictionary);
}
这是 Book 的构造函数:
public Book(int bookID, string name, BindingList<Book> assocText)
{
BookID = bookID;
Name = name;
AssociatedTexts = assocText;
}
你请求了整个 Book 类,所以这里是:
public class Book
{
public static BindingList<Text> AssociatedTexts { get; set; }
public string Name { get; set; }
public int BookID { get; set; }
public int TextID { get; private set; }
public Book()
{
}
public Book(int bookID, string name)
{
BookID = productID;
Name = name;
}
public Book(int bookID, string name, BindingList<Text> assocText)
{
BookID = bookID;
Name = name;
AssociatedTexts = assocText;
}
public static void addAssociatedTexts(Text text)
{
AssociatedTexts.Add(text);
}
public static bool removeAssociatedText(int textID)
{
bool ret = false;
if (Book.AssociatedTexts.Count > textID)
{
Book.AssociatedTexts.RemoveAt(textID);
ret = true;
}
else
{
ret = false;
}
return ret;
}
public Part lookupAssociatedTexts(int searchPart)
{
for (int i = 0; i < AssociatedTexts.Count; i++)
{
if (AssociatedTexts[i].TextID == searchPart)
{
return AssociatedTexts[i];
}
}
return null;
}
我想要完成的是让书籍列表中的每个条目都有自己的 AssociatedTexts 列表。 我将这些映射到 datagridviews 上,用户可以将自己的书籍与自己不同的关联文本添加到它上面,但是我无法将每个关联文本列表与每本书相关联
由于每本书都有自己的关联文本列表, AssociatedTexts
不能是静态的。 否则,所有书籍将共享相同的列表。
另外,我建议将 BindingList 替换为 List,因为 Book 是典型的模型类,不应包含此类与 UI 相关的成员。
public class Book
{
public List<Text> AssociatedTexts { get; set; }
public string Name { get; set; }
public int BookID { get; set; }
public Book(int bookID, string name, IEnumerable<Text> assocText)
{
BookID = bookID;
Name = name;
AssociatedTexts = assocText.ToList();
}
public void addAssociatedText(Text text)
{
AssociatedTexts.Add(text);
}
public bool removeAssociatedText(int textID)
{
bool ret = false;
if (AssociatedTexts.Count > textID)
{
AssociatedTexts.RemoveAt(textID);
ret = true;
}
else
{
ret = false;
}
return ret;
}
public Part lookupAssociatedTexts(int searchPart)
{
for (int i = 0; i < AssociatedTexts.Count; i++)
{
if (AssociatedTexts[i].TextID == searchPart)
{
return AssociatedTexts[i];
}
}
return null;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.