C# 将用户输入与数组匹配
本文关键字:数组 输入 用户 | 更新日期: 2023-09-27 18:32:29
我正在编写一些代码,其中我有一些关于存储在称为成员(id,缩写)的数组中的客户信息。然后,我要求用户提供他们的 id 和首字母,并将输入与来自数组成员的存储信息进行匹配。如果他们匹配,我继续。但是,我在编码中收到一个错误:"访问非静态字段方法或属性需要对象引用"。错误来自 if 语句。关于如何纠正此问题的任何建议?
一些背景信息:我有两个类,一个叫客户,一个叫菜单。菜单是主类,而客户是我引用的类。
这是来自我的菜单类:
int L = 0;
string I = "";
Customer[] members = new Customer[2];
members[0] = new Customer(3242, "JS");
members[1] = new Customer(7654, "BJ");
Console.Write("'nWhat is your Loyalty ID #: ");
L =Convert.ToInt32(Console.ReadLine());
Console.Write("'nWhat is your first and last name initials: ");
I = Console.ReadLine();
if (L==Customer.GetId())
{
if (I == Customer.GetInitials())
{
Console.WriteLine("It matches");
}
}
else
{
Console.WriteLine("NO match");
}
Console.ReadKey();
}
}
}
这来自我的客户类
private int id;
private string initials;
public Customer ()
{
}
public Customer(int id, string initials)
{
SetId(id);
SetInitials(initials);
}
public int GetId()
{
return id;
}
public void SetId(int newId)
{
id = newId;
}
public string GetInitials()
{
return initials;
}
public void SetInitials(string newInitials)
{
initials = newInitials;
}
错误的意思正是它所说的。您无法通过调用 Customer.GetId() 来访问 Customer 的GetId()
函数,因为 GetId() 仅适用于 Customer 实例,而不是直接通过 Customer 类。
Customer.GetId(); //this doesn't work
Customer myCustomer=new Customer(); myCustomer.GetId(); //this works
若要根据输入数组检查用户的输入,需要循环访问数组(或者使用 Linq)。
我将使用泛型列表,因为在大多数情况下,没有充分的理由使用数组。
List<Customer> customers=new List<Customer>();
Customers.Add();//call this to add to the customers list.
foreach(var c in customers)
{
if(c.GetId() == inputId)
{
//match!
}
else
{
//not a match
}
}
还可以使用属性或自动属性(不需要后备字段)来改进 Customer 类。下面是一个自动属性示例:
public string Id {get; set;} // notice there's no backing field?
使用上述 auto 属性语法将允许您执行以下操作:
var customer = new Customer();
string id = customer.Id; // notice there's no parentheses?
属性和自动属性允许使用更简洁的语法,而不是必须编写 Java 风格的单独 getter/setter。