用等效字符串表示Char

Sae*_*ani 5 c# string formatting char

我有以下类作为DataSourceListBox:

class SeparatorChars
{
    /// <summary>
    /// Text to describe character
    /// </summary>
    public string Text { get; set; }

    /// <summary>
    /// Char value of the character
    /// </summary>
    public char Value { get; set; }

    /// <summary>
    /// Represent object as string
    /// </summary>
    /// <returns>String representing object</returns>
    public override string ToString()
    {
        return Text + " '" + Value + "'";
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,默认情况下这将使用Valuejust作为添加到字符串的常规字符,例如,如果我Tab像这样定义此类:

var TabSeparator = new SeparatorChars {Text = "Tab", Value = '\t'}
Run Code Online (Sandbox Code Playgroud)

字符串表示将是:

Tab '     '
Run Code Online (Sandbox Code Playgroud)

但我需要它

Tab '\t'
Run Code Online (Sandbox Code Playgroud)

这该怎么做?!

Jas*_*own 6

无可否认地从这篇文章中扯掉并且未经测试.

public override string ToString()
{
    return ToLiteral(Text + " '" + Value + "'");
}

private string ToLiteral(string input)
{
    var writer = new StringWriter();
    CSharpCodeProvider provider = new CSharpCodeProvider();
    provider.GenerateCodeFromExpression(new CodePrimitiveExpression(input), writer, null);
    return writer.ToString();
}
Run Code Online (Sandbox Code Playgroud)