如何在C#的for循环中为类实例名称添加数字后缀?
动态创建带命名标识的Pizza实例解决方案
问题核心
你想根据用户输入的数量,在循环中创建多个Pizza实例,每个实例要有pizza1、pizza2这类带数字后缀的标识,但C#不允许直接在运行时生成动态变量名(比如直接写pizza[i]当变量名是行不通的)。
解决思路
- 给
Pizza类新增一个Name属性,用来存储每个披萨的标识名称(如pizza1) - 使用集合(比如
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
相关产品推荐
相关产品推荐

