C# 允许用户选择对象的名称

C# 允许用户选择对象的名称,c#,C#,以下是我的代码中的相关部分: //Allow user to add details of a player Console.WriteLine("Please enter a player name"); string player = Console.ReadLine(); //Create new player object PlayersClass userPlayer = new Pl

以下是我的代码中的相关部分:

        //Allow user to add details of a player
        Console.WriteLine("Please enter a player name");
        string player = Console.ReadLine();

        //Create new player object
        PlayersClass userPlayer = new PlayersClass();
这就是我的PlayerClass:

    class PlayersClass
    {
        public int id;
        public string name, city, street, teamName;
        public DateTime birthDate;
        public float height;
    }
我希望player对象以用户输入-player(字符串)命名。 我想要字符串播放器的值,而不是userPlayer

在c#中可能吗

进一步详情:
它将进入一个玩家列表,其中包含以玩家姓名命名的对象。仅在代码的这一特定部分中,我希望用户只输入一名玩家的详细信息。您可以看到,整个玩家列表已经由以玩家名称命名的对象组成(在本例中忽略类中的属性名称)

正如上面注释中所建议的,您可以使用字典按名称存储实例

using System;
using System.Collections.Generic;

class PlayersClass
{
    public int id;
    public string name, city, street, teamName;
    public DateTime birthDate;
    public float height;
}

public class Program
{
    public static void Main()
    {
        Dictionary<string, PlayersClass> players = new Dictionary<string, PlayersClass>();
        string player = "bob"; //Console.ReadLine();
        players[player] = new PlayersClass(){ 
          name = player
        };
        player = "justin"; //Console.ReadLine();
        players[player] = new PlayersClass() {
          name = player
        };
        Console.WriteLine(players["justin"].name);
    }
}

使用系统;
使用System.Collections.Generic;
职业球员职业
{
公共int id;
公共字符串名称、城市、街道、团队名称;
公共日期时间出生日期;
公众浮标高度;
}
公共课程
{
公共静态void Main()
{
字典播放器=新字典();
string player=“bob”//Console.ReadLine();
players[player]=新的playerClass(){
name=玩家
};
player=“justin”//Console.ReadLine();
玩家[玩家]=新玩家等级(){
name=玩家
};
Console.WriteLine(玩家[“justin”].name);
}
}

不,你不是真的想要那样。我认为您只需要将player对象的
name
属性设置为您输入的字符串。然后你可以用它来显示等等。我想你可能也会以同样的方式询问其他细节,如出生日期等。重命名变量没有任何作用(无论如何,这是不可能的——变量名是在编译代码时设置的,而不是在运行代码时)。此外,使用属性,而不是字段。“我知道这样做会有很大的错误空间,但我需要它用于这个特定的项目”……不,没有错误的空间,因为这是不可能的,我已经解释过了。这是家庭作业还是什么?也许你误解了说明。如果您具体告诉我们您收到了哪些指令,我们可能可以帮助您解释它们。您可能希望将变量存储在
字典中。然后你可以使用用户输入作为一个键,这样会更有意义。但这不是你想要的。因此,您不需要重命名变量本身,只需创建一个列表,该列表允许您使用一个键来标识列表中的每个条目。正如前面提到的,字典是一个很好的结构。您可以将键设置为输入的文本,并将其与播放器对象关联(无论首先包含该对象的变量的名称如何)。@roiguber;您不知道如何使用字典,并且在不到2分钟的时间内验证了此代码是否符合您的要求,并且现在可以正常工作了?该死,你跑得太快了。只是要小心:字典不喜欢别人问他们不知道的东西
var playerObject=players[“ksjadhkjlhlasdkjfasld”]
可能会引发异常。@quetzalcatl,注意到。顺便说一句,有人已经把这句话格式化了。当我直接从dotnetfiddle粘贴时,我没有注意到。