gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:14:04 25 4
gpt4 key购买 nike

我正在编写一些代码,其中我有一些关于客户的信息存储在一个名为 members (id, initials) 的数组中。然后,我向用户询问他们的 ID 和姓名首字母,并将输入与数组成员的存储信息相匹配。如果他们匹配我继续前进。但是我在编码中遇到错误:“需要对象引用才能访问非静态字段方法或属性”。错误来自 if 语句。关于如何纠正此问题的任何建议?

一些背景信息:我有两个类,一个叫 Customer,一个叫 Menu。菜单是主类,而客户是我引用的类。

这是我的菜单类:

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

这来 self 的客户类

    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)。

我要使用 generic list ,因为在大多数情况下并没有充分的理由使用数组。

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?

使用上面的自动属性语法可以让你这样做:

var customer = new Customer();
string id = customer.Id; // notice there's no parentheses?

属性和自动属性允许使用更清晰的语法,而不是必须编写 Java 风格的单独 getter/setter。

关于C# 将用户输入匹配到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27220185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com