[英]c# How to call a List from another Class
我对 c# 有点陌生,正在尝试制作电话簿控制台应用程序。 需要一些帮助来弄清楚如何从另一个类调用列表。 要理解我的代码:我有一个包含列表的类 (ContactsList)。 然后我有另一个类(AppOptions),它有一些用户可以选择的选项,一个是 ViewAllContacts。 所以我需要知道我需要在 ViewAllContacts 方法中编写什么代码,以及是否需要在其他任何地方进行任何其他更改。
public class ContactsList
{
public string contactName { get; set; }
public int contactNumber { get; set; }
public void listMethod()
{
List<ContactsList> contacts = new List<ContactsList>();
{
contacts.Add(new ContactsList { contactName = "John", contactNumber = 01 });
contacts.Add(new ContactsList { contactName = "Jack", contactNumber = 02 });
contacts.Add(new ContactsList { contactName = "Jay", contactNumber = 03 });
}
}
}
class AppOptions
{
ContactsList contactList = new ContactsList();
public void viewAllContacts()
{
}
}
对我的代码的任何额外改进将不胜感激。 谢谢!
编辑:我想要的另一件重要的事情是使用 ViewAllContacts 方法遍历列表
你应该试试下面的代码。
public class ContactsList
{
public string contactName { get; set; }
public int contactNumber { get; set; }
public IList<ContactsList> listMethod()
{
List<ContactsList> contacts = new List<ContactsList>();
{
contacts.Add(new ContactsList { contactName = "John", contactNumber = 01 });
contacts.Add(new ContactsList { contactName = "Jack", contactNumber = 02 });
contacts.Add(new ContactsList { contactName = "Jay", contactNumber = 03 });
}
return contacts;
}
}
class AppOptions
{
ContactsList contactList = new ContactsList();
public void viewAllContacts()
{
var lst = contactList.listMethod();
}
}
Contact
是单个联系人(姓名和号码)Contacts
是集合Contacts
他们来了:
public class Contact {
public Contact(string name, string number) {
if (null == name)
throw new ArgumentNullException(nameof(name));
if (null == number)
throw new ArgumentNullException(nameof(number));
//TODO: Add more validation here
Name = name;
Number = number;
}
public string Name {get;}
// Let it be of type string: we can have numbers like "+1(555)123-45-67"
public string Number {get;}
public override string ToString() => $"{Name} {Number}";
public bool Equals(Contact other) {
if (ReferenceEquals(this, other))
return true;
if (null == other)
return false;
return string.Equals(Name, other.Name, StringComparison.OrdinalIgnoreCase) &&
string.Equals(Number, other.Number, StringComparison.OrdinalIgnoreCase);
}
public override bool Equals(object obj) => obj is Contact other && Equals(other);
public override int GetHashCode() =>
Number?.GetHashCode(StringComparison.OrdinalIgnoreCase) ?? 0;
}
集合可以是(如果你喜欢List<T>
)
public class Contacts : IList<Contact> {
private List<Contact> m_Items = new List<Contact>();
public Contact this[int index] {
get => m_Items[index];
set {
if (null == value)
RemoveAt(index);
else
m_Items[index] = value;
}
}
public void Add(Contact item) {
if (null == item)
throw new ArgumentNullException(nameof(item));
m_Items.Add(item);
}
public void Insert(int index, Contact item) {
if (null == item)
throw new ArgumentNullException(nameof(item));
m_Items.Insert(index, item);
}
public int Count => m_Items.Count;
public bool IsReadOnly => false;
public void Clear() => m_Items.Clear();
public bool Contains(Contact item) => m_Items.Contains(item);
public void CopyTo(Contact[] array, int arrayIndex) => m_Items.CopyTo(array, arrayIndex);
public IEnumerator<Contact> GetEnumerator() => m_Items.GetEnumerator();
public int IndexOf(Contact item) => m_Items.IndexOf(item);
public bool Remove(Contact item) => m_Items.Remove(item);
public void RemoveAt(int index) => m_Items.RemoveAt(index);
IEnumerator IEnumerable.GetEnumerator() => m_Items.GetEnumerator();
}
然后你可以轻松使用它
private Contacts myContacts = new Contacts() {
new Contact("John", "01"),
new Contact("Jack", "02"),
new Contact("Jay", "03"),
};
...
public void viewAllContacts() {
foreach (var contact in myContacts)
Console.WriteLine(contact);
}
你有基本的问题我建议你先学基本的
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/reference-types
您可以创建 IList listMethod 并在课堂上使用它
首先,这不是像这样声明类的好编程方法,您可以创建具有属性 contactName 和 contactNumber 的类,然后创建另一个具有 listMethod 的类。 您应该使用此类来获取数据。
无论如何,在这种情况下,您只需要更改 listMethod 的返回类型,它现在是无效的,因此不返回任何内容,您还可以使用 foreach 循环遍历联系人。
public class ContactsList
{
public string contactName { get; set; }
public int contactNumber { get; set; }
public List<ContactsList> listMethod()
{
List<ContactsList> contacts = new List<ContactsList>();
{
contacts.Add(new ContactsList { contactName = "John", contactNumber = 01 });
contacts.Add(new ContactsList { contactName = "Jack", contactNumber = 02 });
contacts.Add(new ContactsList { contactName = "Jay", contactNumber = 03 });
}
}
}
class AppOptions
{
ContactsList contactList = new ContactsList();
public void viewAllContacts()
{
var contacts = contactList.listMethod();
foreach(var item in contacts)
{
Console.WriteLine(item.contactName);
Console.WriteLine(item.contactNumber);
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.