1. 项目概述:C#整数数组输入处理实战
刚接触C#时,处理用户输入的整数数组是个看似简单却暗藏玄机的任务。作为上位机开发、多线程处理和算法实现的基础操作,数组输入的正确处理直接影响后续业务逻辑的稳定性。我在工业控制项目中就曾因数组解析不严谨导致过PLC通讯异常,今天分享的正是从实战中总结的完整解决方案。
这个需求的核心在于:如何可靠地接收用户输入(控制台/窗体),将其转换为整型数组,并处理各种异常情况。我们将覆盖控制台输入、WinForm文本框处理、类型转换优化和边界值防御四方面内容,特别适合需要快速实现数据采集功能的上位机开发者参考。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 控制台输入的标准处理方法
2.1 基础输入与分割
最基础的实现是通过Console.ReadLine获取字符串,再用Split方法分割:
csharp复制Console.WriteLine("请输入整数数组,用空格分隔:");
string input = Console.ReadLine();
string[] strArray = input.Split(' ');
int[] intArray = new int[strArray.Length];
for(int i=0; i<strArray.Length; i++)
{
if(int.TryParse(strArray[i], out int num))
{
intArray[i] = num;
}
else
{
Console.WriteLine($"第{i+1}个元素'{strArray[i]}'不是有效整数");
intArray[i] = 0; // 默认值处理
}
}
关键点:必须使用TryParse而非Parse,避免输入非数字导致程序崩溃。工业场景中,我们通常记录无效数据位置而非简单赋零值。
2.2 增强型输入验证
实际项目需要更健壮的验证逻辑:
csharp复制List<int> numbers = new List<int>();
Console.WriteLine("请输入整数(每行一个,空行结束):");
while(true)
{
string line = Console.ReadLine();
if(string.IsNullOrWhiteSpace(line)) break;
if(int.TryParse(line, out int num))
{
numbers.Add(num);
}
else
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine($"! 忽略无效输入: {line}");
Console.ResetColor();
}
}
int[] result = numbers.ToArray();
这种交互方式在需要精确控制每个元素的场景(如PLC参数配置)中特别实用。
3. WinForm窗体输入的高级处理
3.1 文本框批量输入
上位机开发更常见的场景是通过TextBox接收输入:
csharp复制// 假设txtInput是多行文本框
string[] lines = txtInput.Text.Split(
new[] { "\r\n", "\n" },
StringSplitOptions.RemoveEmptyEntries);
List<int> parsedNumbers = new List<int>();
StringBuilder errorLog = new StringBuilder();
foreach(var line in lines.Select((text,idx)=>new{text,idx}))
{
if(int.TryParse(line.text, out int num))
{
parsedNumbers.Add(num);
}
else
{
errorLog.AppendLine($"行{line.idx+1}: 无效整数 '{line.text}'");
}
}
