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;
    }

C# 将用户输入与数组匹配

错误的意思正是它所说的。您无法通过调用 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。