You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

你的PlayersClass定义:

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

你的核心需求:

希望用用户输入的字符串player的值替代userPlayer作为对象名,并且将这类对象存入玩家列表,列表中的对象均以对应玩家的名称命名(忽略类内部的name属性)。


嘿,这在C#里是做不到的哦。因为C#是静态类型语言,变量名是在编译阶段就固定下来的,没办法在运行时根据用户输入的字符串动态生成变量名。

不过别担心,我们可以用另一种方式实现类似的效果——用Dictionary<string, PlayersClass>来映射玩家名称和对应的对象。这样你就能通过用户输入的名字快速找到对应的对象,完全满足你的需求:

// 初始化一个字典,用来关联玩家名称和对应的对象
Dictionary<string, PlayersClass> playerMap = new Dictionary<string, PlayersClass>();

Console.WriteLine("Please enter a player name");
string playerName = Console.ReadLine();

// 创建新的玩家对象
PlayersClass newPlayer = new PlayersClass();

// 将对象存入字典,用用户输入的名字作为键
playerMap.Add(playerName, newPlayer);

// 如果需要把对象加入列表,直接操作对象即可
List<PlayersClass> playerList = new List<PlayersClass>();
playerList.Add(newPlayer);

// 之后如果要通过玩家名称获取对象,直接用字典的键查找就行
if (playerMap.TryGetValue(playerName, out PlayersClass targetPlayer))
{
    // 这里可以操作targetPlayer对象
}

这样一来,虽然不能直接把用户输入的字符串当变量名,但通过字典的键值对,你可以实现“用玩家名称关联对象”的核心需求,而且完全不影响把对象存入列表的操作。


内容的提问来源于stack exchange,提问作者roi guber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 16:02:55