Reputation: 293
I want to create a new instance of a class but I want the name of the instance to be the name inputted by the user whilst the program is running. I don't want Employee employee = new Employee();. I want it to be named according to what the user inputs.
Console.WriteLine("Enter Employee name");
string inputName = Console.ReadLine();
Employee [ inputName ] = new Employee();
e.g. If 'inputName' was 'Kaylee' then how do I create an instance whilst the program is running of Employee Kaylee = new Employee();
Upvotes: 0
Views: 330
Reputation: 512
As others were pointing out in the comments, dynamically defining a variable name is not possible!
If you want your Employee class to be associated to a name that was input by a user, you have two options in my opinion:
Give your Employee class a "Name" property
public class Employee
{
public string Name { get; set; }
}
That way you can do something like this:
Console.WriteLine("Enter Employee name");
string inputName = Console.ReadLine();
EmployeeList.Add(new Employee{ Name = inputName });
Use a dictionary
Dictionary<string, Employee> employees = new Dictionary<string, Employee>();
Console.WriteLine("Enter Employee name");
string inputName = Console.ReadLine();
// Check if employee already exists, since dictionary keys have to be unique
if(!employees.ContainsKey(inputName))
{
employees.Add(inputName, new Employee());
}
Hope this helps!
Upvotes: 1