C#是否存在无需指定大小的数组?如何实现用户输入文本自动加框
C# 动态录入用户输入解决方案
基础问题答复
C# 原生数组为固定大小结构,初始化时必须指定长度,你可以使用 List<string> 动态集合实现无需预定义长度的内容存储,录入完成后可通过 .ToArray() 方法直接转换为字符串数组,完全满足你的需求。
实现逻辑
约定用户输入结束的触发规则(输入空行代表录入完成),逐行读取用户输入存入List<string>,由集合自动完成扩容和行数统计,完全省去提前询问行数的步骤,同时也顺便解决了原代码中用户输入非数字导致崩溃的问题。
修改后完整代码
using System.Collections.Generic; // 若项目已隐含引用该命名空间可省略 Console.WriteLine("您好!我可以把任意引语用@组成的正方形边框包裹起来。\n请逐行输入您的引语内容,全部输入完成后敲入空行即可结束录入:"); // 动态存储用户输入的行,无需预先指定长度 List<string> linesList = new List<string>(); while (true) { string inputLine = Console.ReadLine(); // 输入空行/空白行时结束录入 if (string.IsNullOrWhiteSpace(inputLine)) { break; } linesList.Add(inputLine); } // 如需使用字符串数组可取消下方注释 // string[] lines = linesList.ToArray(); int numberOfLines = linesList.Count; // 寻找最长行的长度 int maxLength = 0; for (int i = 0; i < numberOfLines; i++) { if (maxLength < linesList[i].Length) { maxLength = linesList[i].Length; } } // 生成边框 char doggy = '@'; char space = ' '; int frameLength = maxLength + 4; string frame = new string(doggy, frameLength); Console.WriteLine(frame); for (int i = 0; i < numberOfLines; i++) { string padding = new string(space, frameLength - 3 - linesList[i].Length); Console.WriteLine(doggy + space + linesList[i] + padding + doggy); } Console.WriteLine(frame); Console.ReadLine();
内容的提问来源于stack exchange,提问作者9millihelens
相关产品推荐
相关产品推荐

