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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:15:10