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

C#中能否使用变量或用户输入值作为新建对象的变量名

解决方案

你期望的直接将邮箱字符串作为变量名的写法在C#中无法实现,原因有两点:

  1. C#是静态编译语言,局部变量名必须在编译阶段就确定,无法在运行时根据用户输入动态生成变量名
  2. 邮箱地址中包含的@、.等符号不符合C#标识符的命名规则,无法直接作为变量名使用
替代实现方案

你可以通过Dictionary<string, Client>字典结构存储客户端实例,以邮箱作为键匹配对应实例,完全可以满足你通过邮箱定位实例调用方法的需求。

步骤1:声明字典

在合适的作用域(全局或者当前方法开头)声明字典用于存储所有客户端实例:

Dictionary<string, Client> clientMap = new Dictionary<string, Client>();

步骤2:修改实例创建逻辑

修改你的原有代码,将新建的客户端实例存入字典:

Console.WriteLine("Full Name:");
string name = Console.ReadLine();

Console.WriteLine("Email:");
string email = Console.ReadLine();

Console.WriteLine("Address:");
string address = Console.ReadLine();

Console.WriteLine("Password:");
string password = Console.ReadLine();

// 以邮箱为键存储实例
clientMap.Add(email, new Client(name, email, address, password));

步骤3:调用实例方法

需要调用指定邮箱对应实例的方法时,写法如下:

clientMap["John@gmail.com"].Classmethod();
  • 若要避免重复邮箱存入时报错,可以先调用clientMap.ContainsKey(email)判断是否存在该邮箱对应的实例后再做新增/更新操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 01:48:03