Convert 类与解析
使用 Convert 和 TryParse 进行解析与转换。
Convert 类与解析 是 CoddyKit 上的免费 C# Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 C# Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 C# Academy 课程共包含 4 节课。
将字符串转换为数字
用户输入以文本形式到达。要用它进行计算,必须将字符串转换为数字。C# 提供了 Convert、Parse 和 TryParse。
using System;
class Program
{
static void Main()
{
string input = "42";
int number = int.Parse(input);
Console.WriteLine(number + 8);
}
}int.Parse
int.Parse 会将数字字符串转换为 int。如果文本不是有效数字,就会抛出 FormatException。
using System;
class Program
{
static void Main()
{
try
{
int n = int.Parse("abc");
Console.WriteLine(n);
}
catch (FormatException)
{
Console.WriteLine("Not a valid number");
}
}
}int.TryParse
int.TryParse 可以避免异常:成功时返回 true,并将结果放入 out 参数;失败时返回 false。
using System;
class Program
{
static void Main()
{
if (int.TryParse("123", out int n))
Console.WriteLine("Parsed: " + n);
else
Console.WriteLine("Failed");
}
}使用 TryParse 安全处理输入
对于不可信的输入,TryParse 是首选方式,因为无效文本会得到妥善处理,而不会导致程序崩溃。
using System;
class Program
{
static void Main()
{
string[] inputs = { "10", "oops", "30" };
int total = 0;
foreach (var s in inputs)
{
if (int.TryParse(s, out int v))
total += v;
}
Console.WriteLine("Total of valid: " + total);
}
}转换类
Convert 类可以在多种基本类型之间进行转换,例如 Convert.ToInt32、Convert.ToDouble、Convert.ToBoolean 等。
using System;
class Program
{
static void Main()
{
int i = Convert.ToInt32("256");
double d = Convert.ToDouble("3.14");
bool b = Convert.ToBoolean("true");
Console.WriteLine(i + ", " + d + ", " + b);
}
}转换会处理空值
与 int.Parse 不同,Convert.ToInt32(null) 会返回 0,而不是抛出异常;这有时很方便,但也可能令人意外。
using System;
class Program
{
static void Main()
{
string s = null;
int n = Convert.ToInt32(s); // returns 0
Console.WriteLine("Result: " + n);
}
}在数值类型之间转换
Convert 还可以将一种数值类型转换为另一种,并且在将浮点值转换为整数时会进行四舍五入,而不是截断。
using System;
class Program
{
static void Main()
{
double d = 7.6;
int cast = (int)d; // truncates -> 7
int converted = Convert.ToInt32(d); // rounds -> 8
Console.WriteLine("cast=" + cast + ", convert=" + converted);
}
}解析其他类型
大多数内置类型都有自己的 Parse/TryParse,例如 double.TryParse、bool.TryParse、DateTime.TryParse 等。
using System;
class Program
{
static void Main()
{
bool okD = double.TryParse("2.5", out double d);
bool okB = bool.TryParse("True", out bool flag);
Console.WriteLine(okD + ":" + d + ", " + okB + ":" + flag);
}
}使用 ToString 反向转换
要将数字转换回文本,请调用 ToString(),也可以选择传入格式字符串。
using System;
class Program
{
static void Main()
{
int n = 255;
double price = 12.5;
Console.WriteLine(n.ToString());
Console.WriteLine(price.ToString("C")); // currency format
}
}选择合适的工具
对于无法信任的用户输入,请使用 TryParse;当输入肯定有效时,使用 Parse;处理空值或在多种类型之间转换时,使用 Convert。
using System;
class Program
{
static void Main()
{
string userInput = "55x";
int value = int.TryParse(userInput, out int v) ? v : -1;
Console.WriteLine(value == -1 ? "Invalid input" : "Got " + value);
}
}综合运用
稳健的输入处理流程会先使用 TryParse 验证输入,在失败时使用默认值,然后安全地进行计算。
using System;
class Program
{
static int ReadAge(string input)
{
if (int.TryParse(input, out int age) && age >= 0)
return age;
return 0; // safe default
}
static void Main()
{
Console.WriteLine("Age: " + ReadAge("28"));
Console.WriteLine("Age: " + ReadAge("bad"));
}
}快速检查
测试您对解析和转换的理解。
复习
可以使用 int.Parse(输入错误时抛出异常)、int.TryParse(安全,返回布尔值和 out 值)或 Convert 类(处理空值、对浮点数进行四舍五入,并转换多种类型)将文本转换为数字。对于不可信的输入,优先使用 TryParse;反向转换时使用 ToString()。
using System;
class Program
{
static void Main()
{
if (int.TryParse("99", out int n))
Console.WriteLine("Value: " + n);
Console.WriteLine("Convert: " + Convert.ToInt32("7"));
}
}常见问题解答
「Convert 类与解析」课时是免费的吗?
是的 — 「Convert 类与解析」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 C# Academy 课程的其余内容,请升级到 CoddyKit PRO。 C# Academy 课程共包含 4 节课。
「Convert 类与解析」这节课中我会学到什么?
使用 Convert 和 TryParse 进行解析与转换。 你通过在浏览器中直接运行的动手代码来练习 C# Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 C# Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 C# Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「Convert 类与解析」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 C# Academy 课中编写并运行代码吗?
能。每节 C# Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。