将用户输入的字符串转换为新对象

时间:2014-11-03 02:24:19

标签: c#

我创建了一个名为Cashiers的课程(如下所示)。我可以通过代码创建新实例没问题。我不能做的是让用户在名为CashierLOgInNName 的字符串变量中输入字符串值。因此,如果用户输入值为DSPR,我希望能够通过该名称创建新的出纳对象,或等效于

Cashiers DSPR = new Cashiers();

我已经包含了与此问题相关的代码部分。理想情况下,如果我可以使用一行或多行代码来使我能够完成这项工作以及为什么这样做非常出色。

public class Cashiers
{ 
    public int CashierID;
    public int Password;
    public string FirstName;
    public string LastName; 

    public void SetCashiers(int CashierID, int Password,string FirstName, string LastName )
    {
        this.CashierID = CashierID;
        this.Password = Password;
        this.FirstName = FirstName;
        this.LastName = LastName;
    }

    public void SetNewCashier(int CashierID, int Password, string FirstName, string LastName)
    {
        //Cashiers NewCashier = new Cashiers();
        this.CashierID = CashierID;
        this.Password = Password;
        this.FirstName = FirstName;
        this.LastName = LastName;
    }
}

Console.WriteLine("enter New Log in name");
string CashierLOgInNName = Console.ReadLine();

2 个答案:

答案 0 :(得分:0)

听起来像你真正想要的是数据库(这里的答案太宽泛)或字典。

在字典中,您可以Cashier存储string个对象键入。当然,您不会影响变量的名称,但您仍然可以在理论上下文中使用该名称来获取您正在寻找的内容。如果您确实更改了名称,那将导致需要反射,这很麻烦而且很慢。

private Dictionary<string, Cashiers> dict = new Dictionary<string, Cashiers>();

private void Save(string name, [probably some other details?])
{
    dict[name] = new Cashiers(); // or whatever
}

private void Print(string name)
{
    Console.WriteLine(dict[name]);
}

private void PrintAll()
{
    Console.WriteLine(string.Join(Environment.NewLine, dict.Select(c => c.Key + "\t" + c.Value.ToString()));
}

显然我的实现在这里有些不足之处,但它展示了如何使用它。

答案 1 :(得分:0)

更直接地回答您的示例,建立在使用字典(也称为键值对)的最佳方法上:

Dictionary<String,Cashiers) dictCashiers = new Dictionary<String,Cashiers>();
Console.WriteLine("Enter new login name:");
String CashierLogInName = Console.ReadLine();
Cashiers newCashier = new Cashiers();

dictCashiers.Add(CashierLogInName,newCashier);
//replace constants in the next line with actual user's data, probably input from more ReadLine queries to user?
dictCashiers[CashierLogInName].SetNewCashier(1,2,"Jane","Doe");

您可以看到 dictCashiers [CashierLogInName] 完成我认为您正在寻找的内容,并检索与该登录ID相关联的Cashiers对象。