C# 反向执行算法的简写

C# 反向执行算法的简写,c#,visual-studio-2017,C#,Visual Studio 2017,祝贺堆栈溢出 我有一个方法,当按钮的选中状态改变时执行。 该方法使用伪数据交换富文本编辑器中的占位符文本,反之亦然。用户可以将文本从数据表拖到富文本编辑器上 \u dtFields是一个包含占位符文本和相应伪数据的数据表,我的问题是,在检查状态更改时,我遍历整个数据表,查看富文本编辑器是否包含占位符文本bChecked=true,或者编辑器是否包含伪数据bChecked=false。除了我在这里所做的以外,还有没有更有效的方法用伪数据交换占位符值 private void ViewMergedD

祝贺堆栈溢出

我有一个方法,当按钮的选中状态改变时执行。 该方法使用伪数据交换富文本编辑器中的占位符文本,反之亦然。用户可以将文本从数据表拖到富文本编辑器上

\u dtFields
是一个包含占位符文本和相应伪数据的数据表,我的问题是,在检查状态更改时,我遍历整个数据表,查看富文本编辑器是否包含占位符文本
bChecked=true
,或者编辑器是否包含伪数据
bChecked=false
。除了我在这里所做的以外,还有没有更有效的方法用伪数据交换占位符值

private void ViewMergedData(System.Boolean bChecked)
        {
            foreach (DataRow dr in _dtFields.Rows)
            {
                System.String sFieldName = "<<" + dr["fldFieldName"].ToString() + ">>";
                System.String sPsuedoData = dr["fldData"].ToString();

                //Check for fields on the document
                if (bChecked == true)
                {
                    //Replace with psuedo data
                    if (this.recEmailDesigner.Document.Text.Contains(sFieldName))
                    {
                        this.recEmailDesigner.Document.Text.Replace(sFieldName, sPsuedoData);
                    }
                }
                //Check for psuedo data on the document
                else if (this.recEmailDesigner.Document.Text.Contains(sPsuedoData))
                {
                    //replace with field name
                    this.recEmailDesigner.Document.Text.Replace(sPsuedoData, sFieldName);
                }
            }
        }
private void ViewMergedData(System.Boolean b选中)
{
foreach(数据行dr in _dtFields.Rows)
{
系统。字符串sFieldName=“”;
System.String sPsuedoData=dr[“fldData”].ToString();
//检查文档上的字段
如果(b检查==真)
{
//替换为psuedo数据
if(this.recEmailDesigner.Document.Text.Contains(sFieldName))
{
this.recEmailDesigner.Document.Text.Replace(sFieldName,sPsuedoData);
}
}
//检查文档上的psuedo数据
else if(this.recEmailDesigner.Document.Text.Contains(sPsuedoData))
{
//替换为字段名
this.recEmailDesigner.Document.Text.Replace(sPsuedoData,sFieldName);
}
}
}

您可以将
sFieldName
sPseudoData
变量替换为两个字符串的动态数组,然后使用基于
b检查的索引选择哪个是“in”和“out”字符串。然后,您只需要一个执行测试和替换的代码“实例”:

private void ViewMergedData(System.Boolean b选中)
{
int index=B检查?0:1;
foreach(数据行dr in _dtFields.Rows)
{
System.String[]sInOut=
{
“”,//[0]-是sFieldName
dr[“fldData”].ToString()/[1]是sPseudoData
};
//检查文档上的字段名或伪数据
if(this.recEmailDesigner.Document.Text.Contains(sInOut[index]))
{
//替换为psuedo数据或字段名
this.recEmailDesigner.Document.Text.Replace(sInOut[index],sInOut[1-index]);
}
}
}

使用这种
i
1-i
“切换回”是
C
C++
编码中的常见范例,但可能有一种更传统和/或更有效的方法来实现类似于
C#
的东西(我对这种语言的经验要少得多)

这很有帮助,教会了我一些新的东西。非常感谢。