C# ToString()的内部机制

C# ToString()的内部机制,c#,string,tostring,C#,String,Tostring,有人知道ToString()方法中的后端机制吗。 它将所有内容都视为对象&返回字符串 假设我希望构建一个类似于ToString()的方法,我肯定会在该方法中包含一个对象参数convert操作&最终通过返回类型返回结果 那么ToString()方法如何在不带参数的情况下实现这一点呢?每个对象都负责实现自己的ToString()方法 没有一个方法可以计算任何类型的对象。它只是一个返回字符串的实例方法,里面没有魔法。如果给定对象的类型没有以自定义方式重写ToString,它将返回类型的完全限定名 MS

有人知道ToString()方法中的后端机制吗。 它将所有内容都视为对象&返回字符串

假设我希望构建一个类似于ToString()的方法,我肯定会在该方法中包含一个对象参数convert操作&最终通过返回类型返回结果


那么ToString()方法如何在不带参数的情况下实现这一点呢?

每个对象都负责实现自己的ToString()方法


没有一个方法可以计算任何类型的对象。

它只是一个返回字符串的实例方法,里面没有魔法。如果给定对象的类型没有以自定义方式重写
ToString
,它将返回类型的完全限定名

MSDN:

ToString方法的默认实现返回完整的 对象类型的限定名称,如下例所示 表演

但如前所述,您可以在类中自由重写
ToString

public class User
{
    public int ID { get; set; }
    public string Name { get; set; }

    public override string ToString()
    {
        return Name;
    }
}
测试:

不要生我的气,但我觉得读一些关于OOP的教程可能会有所帮助


MSDN:

请你重新措辞好吗?这很难理解。但是:
ToString()
是在每种类型的基础上单独实现的(对于那些需要重写它的类型)。这是接口的一部分,我将尝试让@marcGravel的内容更加清晰。是一个在层次结构中的任意点都可以为n的方法。默认实现(即,如果它未被重写)调用
GetType()
方法,然后通过
GetType
对返回的对象调用
ToString
方法。亲爱的,我真的很高兴您的关注,我知道我可以重写ToString()可能您不理解,或者我无法澄清我的问题父类不知道我在类中定义的类成员,因此我没有向ToString()传递任何参数,它如何知道我传递了一个参数,它必须识别它并将其转换为字符串。第二,为什么将值视为一个对象,因为(.)位于对象之后,用于连接method@SaddamRanjhani对不起,我听不懂你的话。也许您想编辑您的问题并提供示例代码,这通常有助于理解问题。通常,
ToString
不具有也不需要参数,因为它是一个实例方法。这意味着(请阅读我在答案末尾提供的链接),您需要该类型的实例。然后可以使用此方法(或属性)。继承层次结构指定类的家族树中的最后一种类型,它覆盖
ToString
。如果调用
myObj.ToString()
.class A{protected string ToString(){}class B:A{public static void Main(){int TempIntVar=645;string TempStringVar=TempIntVar.ToString();string TempString2=555.ToString();Console.WriteLine(TempString2+“”+TempStringVar+“”+TempIntVar);Console.ReadLine();}}}假设默认情况下没有可用的ToString(),我希望您实现的是ToString()方法,使在类B中编写的任何代码都成为有效的。无论如何,对我来说,提前理解它比理解它更容易。亲爱的,我真的很高兴你的关心,我知道我可以重写ToString()可能您不理解,或者我无法澄清我的问题父类不知道我在类中定义的类成员,因此我没有向ToString()传递任何参数它如何知道我传递了一个参数,它必须识别它并将其转换为字符串。第二,为什么它将值视为一个对象,因为(.)位于连接方法的对象之后
public class User
{
    public int ID { get; set; }
    public string Name { get; set; }

    public override string ToString()
    {
        return Name;
    }
}
User saddam = new User { ID = 1, Name = "Saddam" };
Console.WriteLine(saddam.ToString()); // "Saddam"