对象上的方法 ToString() 添加反斜杠以转义字符

Method ToString() on object adds a backslash to escape characters

我不明白我的代码中发生了什么。

我有一个 WrapPanel,其中包含一些 RadioButton。我使用 Tag 属性 将 RadioButton 的 Content 属性 与真实字符相关联:例如制表 = \t.

这是 XAML 部分:

<WrapPanel HorizontalAlignment="Left" Margin="43,24,0,21" Name="wpColSep" VerticalAlignment="Center" Width="286" Orientation="Horizontal" Height="58">
    <RadioButton Content="Tabulation" Height="16" Name="rbTab" Padding="6,0,20,0" Margin="0,0,0,7" Tag="\t" />
    <RadioButton Content="Espace" Height="16" Name="rbSpace" Padding="6,0,20,0" Margin="0,0,0,7" Tag=" " />
    <RadioButton Content="Point-virgule" Height="16" Name="rbPointVirgule" Padding="6,0,20,0" Margin="0,0,0,7" Tag=";" />
    <RadioButton Content="Virgule" Height="16" Name="rbVirgule" Margin="0,7,0,0" Padding="6,0,20,0" Tag="," />
    <RadioButton Content="Autre :" Height="16" Name="rbAutre" Margin="0,7,0,0" Padding="6,0,20,0" />
    <TextBox Height="23" Name="tbAutre" Width="41" Margin="0,10,0,0" Padding="6,0,20,0" />
</WrapPanel>

然后,我尝试获取选中的 RadioButton 并使用此代码将字符保存在 Tag 中:

var rbChecked = wpColSep.ChildrenOfType<RadioButton>().Where(c => c.IsChecked ?? false).FirstOrDefault();
if (rbChecked == rbAutre && !String.IsNullOrEmpty(tbAutre.Text))
{
    //Not important here
}
else if (rbChecked != null)
{
    ConfigImport.SeparateurColonne = rbChecked.Tag.ToString();
}
else
{
    //No RadioButton checked
}

这非常有效,但是当 Tag = "\t" 时,rbChecked.Tag.ToString() 生成 "\\t"。

这是什么原因,我该如何避免?

提前谢谢你,抱歉我的英语不好。

您可能正在调试器中查看结果。

C# 必须使用 \ 转义某些字符,例如 \t\r\"。您将在调试器控制台中看到该转义字符串。别担心,实际的字符串很好。单击变量旁边的放大镜,您将看到实际值。

'wrong'值(与string abc = "abc\n"相同):

看起来不错: