C# ToString():返回表示当前对象的字符串

  • Post category:C#

C#中的ToString()方法可以用于将一个对象转换为字符串表示形式。在使用ToString()方法时,需要注意以下几点:

  1. 如果需要将自定义的类型转换为字符串,需要重载类型的ToString()方法。

  2. 如果ToString()方法没有重载,则默认将对象的完整类型名称转换为字符串。

  3. 当使用ToString()方法时,可以指定参数来格式化转换后字符串的显示形式。

下面将针对以上这几点进行详细说明。

重载类型的ToString()方法

对于自定义的类型,我们可以通过重载ToString()方法来自定义它的字符串表示形式。以一个表示学生信息的类为例,假设其属性包括姓名、年龄和性别,代码如下:

public class Student
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string Gender { get; set; }

    // 重载ToString()方法
    public override string ToString()
    {
        return $"姓名:{Name},年龄:{Age},性别:{Gender}";
    }
}

在上面的代码中,我们重载了Student类型的ToString()方法,并通过字符串插值的方式将学生的姓名、年龄和性别格式化为了一行字符串。

通过调用该对象的ToString()方法,可以将该对象转换为字符串表示形式:

var student = new Student { Name = "张三", Age = 18, Gender = "男" };
string studentStr = student.ToString(); // "姓名:张三,年龄:18,性别:男"

默认ToString()方法的使用

如果没有对某个类型的ToString()方法进行重载,当调用该类型的对象的ToString()方法时,会返回该对象的完整类型名作为一个字符串。

以一个简单的Person类为例:

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

如果我们没有对该类的ToString()方法进行重载,那么当我们调用一个Person对象的ToString()方法时,会返回类的完整类型名作为一个字符串,如下所示:

var person = new Person { Name = "李四", Age = 20 };
string personStr = person.ToString(); // "ConsoleApp1.Person"

使用ToString()方法的参数

在使用ToString()方法时,还可以传递一个参数来对转换后的字符串进行格式化。

ToString()方法的参数应该是一个字符串格式化的字符串,其中包含一个或多个格式项。例如:

var dateTime = new DateTime(2022, 1, 1);
string str = dateTime.ToString("yyyy-MM-dd"); // "2022-01-01"

上面的代码中,将日期时间对象dateTime转换为字符串时,使用了”yyyy-MM-dd”字符串指定了字符串格式,即将年份、月份和日期以横线连接。

除了DateTime类型,一些其它类型(如数字类型)也可以使用ToString()的参数进行格式化。例如:

var num = 123.456;
string str = num.ToString("F2"); // "123.46"

上面的代码中,将数字123.456转换为字符串时,使用了”F2″字符串指定了字符串格式,即保留两位小数并四舍五入。

总结来说,通过对ToString()方法的重载和使用参数,可以灵活地将一个对象转换为符合要求的字符串表示形式。