在 C# 中,ToString() 方法是所有类的默认方法(因为所有类都隐式继承自 object 类),它的主要作用是将对象转换为字符串表示形式。
默认情况下,ToString() 方法返回的是对象的类型名称。但在实际开发中,我们通常会重写这个方法,以便返回更有意义的对象信息,方便调试和输出。
using System;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Occupation { get; set; }
public Person(string name, int age, string occupation)
{
Name = name;
Age = age;
Occupation = occupation;
}
// 重写ToString()方法
public override string ToString()
{
// 返回自定义的字符串表示形式
return $"Person [姓名: {Name}, 年龄: {Age}, 职业: {Occupation}]";
}
}
public class Program
{
public static void Main()
{
Person person = new Person("李四", 30, "工程师");
// 调用ToString()方法(显式调用)
Console.WriteLine(person.ToString());
// 隐式调用:Console.WriteLine会自动调用对象的ToString()方法
Console.WriteLine(person);
}
}
在 Python 中,与 C# 中 public override string ToString() 概念相对应的是 __str__() 魔法方法。
两者的作用和使用场景非常相似:
- 都是用于定义对象的字符串表示形式
- 都会在需要将对象转换为字符串时被自动调用(例如打印对象时)
- 都可以被重写以提供自定义的、更有意义的对象描述
class Person:
def __init__(self, name, age, occupation):
self.name = name
self.age = age
self.occupation = occupation
# 对应C#中的ToString()方法
def __str__(self):
return f"Person [姓名: {self.name}, 年龄: {self.age}, 职业: {self.occupation}]"
if __name__ == "__main__":
person = Person("李四", 30, "工程师")
# 显式调用__str__()方法
print(person.__str__())
# 隐式调用:print会自动调用对象的__str__()方法
print(person)
340

被折叠的 条评论
为什么被折叠?



