方法ToString()on对象为转义字符添加反斜杠

时间:2015-01-23 10:49:27

标签: c# wpf xaml

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

我有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 =&#34; \ t&#34;时,rbChecked.Tag.ToString()生成&#34; \\ t&#34;。

这是什么原因以及如何避免这种情况?

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

1 个答案:

答案 0 :(得分:3)

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

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

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

enter image description here

看起来没问题:

enter image description here