C#中ToString的两种表现方式

模型:DeepSeek-V3

示例:

int i = 75;
// 转换为字符串:
string s = i.ToString();
// 等同于:
string s = Convert.ToString(i);

在 C# 中,int i = 75;​ 后,string s = i.ToString();​ 和 string s2 = Convert.ToString(i);​ 都可以将整数 i​ 转换为字符串,但它们的实现方式和使用场景有一些区别。以下是详细对比:

方法来源

i.ToString()

  • 这是 int​ 类型的 实例方法,直接通过对象调用。
  • 属于 System.Int32​ 结构体的成员方法。

示例:

int i = 75;
string s = i.ToString(); // 调用实例方法

Convert.ToString(i)

  • 这是 .NET 框架提供的 静态方法,属于 System.Convert​ 类。
  • 无需实例调用,直接通过类名调用。

示例:

int i = 75;
string s = Convert.ToString(i); // 调用静态方法

参数支持

i.ToString()

  • 支持 格式化字符串区域性设置CultureInfo​) 。

示例:

int i = 75;
string s = i.ToString("D4"); // 输出 "0075"(4位数字)
string s2 = i.ToString("C", new CultureInfo("en-US")); // 输出 "$75.00"(货币格式)

Convert.ToString(i)

  • 仅支持基本转换,不支持格式化字符串或区域性设置。

示例:

int i = 75;
string s = Convert.ToString(i); // 输出 "75"

异常处理

i.ToString()

  • 不会抛出异常,因为 int​ 类型的 ToString()​ 方法总是能成功转换为字符串。

Convert.ToString(i)

  • 也不会抛出异常,因为 Convert.ToString​ 对基本类型(如 int​)有明确的支持。

性能

i.ToString()

  • 直接调用实例方法,性能较高。

Convert.ToString(i)

  • 内部会调用 i.ToString()​,因此性能稍低(多了一层方法调用)。

适用场景

i.ToString()

  • 适合需要 格式化输出区域性设置 的场景。

示例:

int i = 75;
string s = i.ToString("X"); // 输出 "4B"(十六进制)

Convert.ToString(i)

  • 适合简单的类型转换,尤其是需要统一处理多种类型时(如 object​ 类型)。

示例:

object obj = 75;
string s = Convert.ToString(obj); // 统一处理 object 类型

总结

特性 i.ToString() ​​Convert.ToString(i)
方法类型 实例方法 静态方法
格式化支持 支持 不支持
区域性支持 支持 不支持
性能 较高 稍低(多一层调用)
适用场景 需要格式化或区域性设置 简单转换或统一处理多种类型

推荐用法

  • 如果需要格式化或区域性设置,使用 i.ToString()​。
  • 如果只是简单转换或处理多种类型,使用 Convert.ToString(i)​。

例如:

int i = 75;

// 需要格式化
string formatted = i.ToString("D4"); // 输出 "0075"

// 简单转换
string simple = Convert.ToString(i); // 输出 "75"