反向执行算法的简写
Short hand for executing an algorithm in reverse
问候堆栈溢出!
我有一个方法可以在按钮的选中状态发生变化时执行。
该方法用伪数据交换富文本编辑器中的占位符文本,反之亦然。用户可以将数据 table 中的文本拖到富文本编辑器中。
_dtFields
是包含占位符文本和相应伪数据的数据 table,我的问题是,在检查状态更改时,我循环遍历整个数据 table查看富文本编辑器是否包含占位符文本 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);
}
}
}
您可以用两个字符串的动态数组替换 sFieldName
和 sPseudoData
变量,然后 select 即 "in" 和 "out" 字符串使用基于 bChecked
的索引。那么你只需要一个 'instance' 的代码来进行测试和替换:
private void ViewMergedData(System.Boolean bChecked)
{
int index = bChecked ? 0 : 1;
foreach (DataRow dr in _dtFields.Rows)
{
System.String[] sInOut =
{
"<<" + dr["fldFieldName"].ToString() + ">>", // [0] - was sFieldName
dr["fldData"].ToString() // [1] - was sPseudoData
};
// Check for field name OR pseudo data on the document
if (this.recEmailDesigner.Document.Text.Contains(sInOut[index]))
{
// Replace with psuedo data OR field name
this.recEmailDesigner.Document.Text.Replace(sInOut[index], sInOut[1 - index]);
}
}
}
i
和1 - i
"switch-back"的使用是C
和C++
编码中的常见范例,但可能 是一种更传统的 and/or 有效的方法来实现 C#
中类似的东西(我对这种语言的经验要少得多)。
问候堆栈溢出!
我有一个方法可以在按钮的选中状态发生变化时执行。 该方法用伪数据交换富文本编辑器中的占位符文本,反之亦然。用户可以将数据 table 中的文本拖到富文本编辑器中。
_dtFields
是包含占位符文本和相应伪数据的数据 table,我的问题是,在检查状态更改时,我循环遍历整个数据 table查看富文本编辑器是否包含占位符文本 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);
}
}
}
您可以用两个字符串的动态数组替换 sFieldName
和 sPseudoData
变量,然后 select 即 "in" 和 "out" 字符串使用基于 bChecked
的索引。那么你只需要一个 'instance' 的代码来进行测试和替换:
private void ViewMergedData(System.Boolean bChecked)
{
int index = bChecked ? 0 : 1;
foreach (DataRow dr in _dtFields.Rows)
{
System.String[] sInOut =
{
"<<" + dr["fldFieldName"].ToString() + ">>", // [0] - was sFieldName
dr["fldData"].ToString() // [1] - was sPseudoData
};
// Check for field name OR pseudo data on the document
if (this.recEmailDesigner.Document.Text.Contains(sInOut[index]))
{
// Replace with psuedo data OR field name
this.recEmailDesigner.Document.Text.Replace(sInOut[index], sInOut[1 - index]);
}
}
}
i
和1 - i
"switch-back"的使用是C
和C++
编码中的常见范例,但可能 是一种更传统的 and/or 有效的方法来实现 C#
中类似的东西(我对这种语言的经验要少得多)。