如何覆盖C#中的ToString()方法?

问题描述:

我想重写更改某些字符的Tostring()方法。可能吗?如果是的话,我该怎么做?如何覆盖C#中的ToString()方法?

根据您的问题,给变化一些ToString执行中的字符,则需要使用base关键字调用现有的ToString方法:

public override string ToString() 
{ 
    return base.ToString().Replace("something", "another thing"); 
} 

请注意,如果您忘记base关键字,它会自动重复进行自我调用,直至获得StackOverflowException

在你的类要在覆盖它,添加:

public override string ToString() 
{ 
    // return your string representation 
} 

添加以下的要重写ToString功能类:

public override string ToString() 
{ 
    // Add your implementation here 
} 

MSDN见的例子。

public override String ToString() 
{ 
    return String.Format("Test {0}", 101); 
} 

所有你需要的是尝试写公众覆盖,然后Visual Studio会为您创建的方法是这样的:

public override string ToString() 
{ 
     // Implement your own code and return desired string 
} 

如果有人寻找“如何覆盖ToString()方法”的一般答案,我写了一篇文章“Override ToString() using JSON serialization or something else”。

在一个总结,以下技术可用于简化的ToString的创建():

  1. JSON序列(无论是DataContractJsonSerializer,JSON.NET或NuGet包JsonValue)。

  2. XMLSERIALIZE

  3. LINQPad的dump an arbitrary object to an HTML string

  4. ServiceStack.Text C# .NET Extension method: T.Dump();