11. C#(解析)
发布: (2026年2月10日 GMT+8 04:07)
3 分钟阅读
原文: Dev.to
Source: Dev.to
本课的真正目标
本课的目标不是记住 int.Parse;真正的要点是理解 计算机永远不相信用户输入。解析是一个明确的、刻意的步骤,负责将字符串解释为特定类型。
Console.ReadLine()始终返回字符串(永不抛出异常)。- 从计算机的角度来看,用户可能会输入:
123-5ABC12.5- 什么都不输入(仅 Enter)
由于编译器无法预测用户会输入什么,C# 做出了刻意的设计选择:不要猜测。
int number = Console.ReadLine(); // 编译时错误
Console.ReadLine() 返回 string,而 number 需要 int;这违反了类型契约。编译器只关心类型,而不关心可能的运行时值。如果我们想把用户输入当作数字处理,必须 显式 地说明——这就是 解析。
什么是解析?
解析是将字符串解释为另一种类型的行为:
"123"→int 123"true"→bool true"2026-01-01"→DateTime
解析不是自动进行的;必须有意调用。
基本示例
using System;
class Program
{
static void Main()
{
Console.WriteLine("Enter a number:");
var input = Console.ReadLine(); // always string
int number = int.Parse(input); // string → int
Console.WriteLine(number + 10);
}
}
逐步推理
- 用户输入
5。 input变为"5"(一个字符串)。int.Parse("5")产生5(一个int)。number + 10的结果是15。
如果 int.Parse 无法解释该字符串(例如 int.Parse("ABC")),执行将在运行时失败(后续课程会涉及)。
为什么 C# 强制这一步
C# 的哲学是:“风险操作必须显式”。 将字符串转换为数字是有风险的,因为字符串可能:
- 不代表数字。
- 为空。
- 格式错误。
因此,C# 拒绝猜测,要求开发者有意识地声明意图:
int number = int.Parse(input); // explicit conversion
常见误解
- 错误思维方式: “
ReadLine()可能返回数字,编译器应该自行判断。” - 正确思维方式: “用户输入始终是字符串。如果需要数字,必须显式解析。”
未解决的问题
int.Parse("ABC"); // Runtime failure
此错误发生在 运行时,而不是编译时。后续章节将介绍如何安全地处理此类情况:
TryParse- 异常处理
- 防止运行时崩溃
记住:Console.ReadLine() 始终返回字符串。