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

如何在C#的for循环中为类实例名称添加数字后缀?

动态创建带命名标识的Pizza实例解决方案

问题核心

你想根据用户输入的数量,在循环中创建多个Pizza实例,每个实例要有pizza1、pizza2这类带数字后缀的标识,但C#不允许直接在运行时生成动态变量名(比如直接写pizza[i]当变量名是行不通的)。

解决思路

  1. 给Pizza类新增一个Name属性,用来存储每个披萨的标识名称(如pizza1)
  2. 使用集合(比如List<Pizza>)来统一管理所有创建的Pizza实例,后续可以方便地遍历、操作这些实例

修改后的完整代码

using System;
using System.Collections.Generic; // 引入集合命名空间

namespace PizzaCalculator
{
    public class Pizza
    {
        public double Size { get; set; }
        public double Price { get; set; }
        public double SquarInch;
        public double PricePerInch;
        public double Radius;
        public double Radius2;
        public string Brand { get; set; }
        public string Name { get; set; } // 新增名称属性

        public void Calculate()
        {
            Radius = Size / 2;
            Radius2 = Math.Pow(Radius, 2);
            SquarInch = Radius2 * 3.14159;
            PricePerInch = Math.Round(Price / SquarInch, 2);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            int pizzaNum; // 数量用int类型更合理

            Console.WriteLine("How many pizza's do you want to compare?");
            // 新增输入验证,避免非整数输入导致程序崩溃
            while (!int.TryParse(Console.ReadLine(), out pizzaNum) || pizzaNum <= 0)
            {
                Console.WriteLine("Please enter a valid positive number:");
            }

            // 创建List集合存储所有Pizza实例
            List<Pizza> pizzas = new List<Pizza>();

            for (int i = 0; i < pizzaNum; i++)
            {
                // 生成带数字后缀的名称,i从0开始所以+1得到pizza1、pizza2
                string pizzaName = $"pizza{i + 1}";
                Console.Write($"\nPlease enter the brand of {pizzaName}: ");
                
                Pizza newPizza = new Pizza() 
                { 
                    Brand = Console.ReadLine(),
                    Name = pizzaName // 给实例绑定专属名称
                };
                
                pizzas.Add(newPizza); // 将实例加入集合统一管理
            }

            // 示例:遍历集合输出所有披萨信息
            Console.WriteLine("\nAll pizzas you entered:");
            foreach (var pizza in pizzas)
            {
                Console.WriteLine($"Name: {pizza.Name}, Brand: {pizza.Brand}");
            }

            Console.ReadKey();
        }
    }
}

关键说明

  • 集合存储:List<Pizza>可以轻松管理任意数量的实例,后续遍历、计算都能统一操作
  • 名称标识:通过字符串插值$"pizza{i + 1}"生成带数字后缀的名称,赋值给实例的Name属性,实现每个披萨的专属标识
  • 输入验证:int.TryParse确保用户输入有效的正整数,避免程序因非法输入崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 00:01:06