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

如何在C#中通过for循环动态创建numX格式的命名变量?

动态创建命名变量的解决方案

你的代码存在语法错误,且C#作为静态类型语言,无法在运行时直接动态创建如num1、num2这类命名变量。下面是正确的实现思路和代码:

问题分析

  • 代码中int tmp.name = Console.ReadLine();是无效语法,C#不支持通过字符串拼接生成变量名
  • 静态语言的变量需要在编译阶段确定定义,运行时无法动态生成新的命名变量

解决方案1:用Dictionary存储命名变量

如果必须保留num1、num2这类命名标识,可以用Dictionary<string, int>来映射变量名和对应数值:

Console.WriteLine("Input count of numbers: ");
ushort.TryParse(Console.ReadLine(), out ushort countVariables);

var numberMap = new Dictionary<string, int>();

for (int i = 1; i <= countVariables; i++)
{
    Console.WriteLine($"Enter value for num{i}: ");
    // 验证输入有效性
    if (int.TryParse(Console.ReadLine(), out int inputValue))
    {
        string varName = $"num{i}";
        numberMap[varName] = inputValue;
    }
    else
    {
        Console.WriteLine($"Invalid input, please enter an integer for num{i}.");
        i--; // 重新获取当前项的输入
    }
}

// 示例:访问指定命名的变量
if (numberMap.ContainsKey("num3"))
{
    Console.WriteLine($"num3 = {numberMap["num3"]}");
}

解决方案2:用List存储(无需显式命名)

如果只是需要按顺序管理输入的数值,用List<int>更简洁:

Console.WriteLine("Input count of numbers: ");
ushort.TryParse(Console.ReadLine(), out ushort countVariables);

var numbers = new List<int>();

for (int i = 1; i <= countVariables; i++)
{
    Console.WriteLine($"Enter number {i}: ");
    if (int.TryParse(Console.ReadLine(), out int inputValue))
    {
        numbers.Add(inputValue);
    }
    else
    {
        Console.WriteLine($"Invalid input, please enter an integer for number {i}.");
        i--;
    }
}

// 示例:访问第1个输入的数值(对应num1)
if (numbers.Count > 0)
{
    Console.WriteLine($"num1 = {numbers[0]}");
}

说明

在C#这类静态语言中,动态生成命名变量不是常规操作,使用集合(Dictionary/List)可以更安全、规范地管理动态输入的数值,同时满足按名称或顺序访问的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 13:36:29