【发布时间】:2013-11-16 12:09:21
【问题描述】:
我想检查 Arguments 是否包含来自 ParameterSwitches 的字符串。如果是这种情况,则应将其从 Arguments 中删除。
问题是,即使 pSwitch 与 Arguments[i] 具有相同的值,条件也不成立并且 Arguments[i] = null;不会被执行。
我已经用调试器一步一步地尝试过了,只是变得更加困惑,因为它证实了我的假设。
string[] Arguments = new string[]{/*some strings*/};
string[] ParameterSwitches = new string[]{/*some strings*/};
for (int i = 0; i < Arguments.Length; i++)
{
foreach (string pSwitch in ParameterSwitches)
{
if (pSwitch == Arguments[i])
{
Arguments[i] = null;
}
}
}
谁能想象这种情况会发生的方式?
提前致谢
更新: 哦女孩和男孩... 下次我在这里问问题之前使用我的眼镜。 其中一根弦后有一小块空白。 这就是问题所在。修剪就行了。
if (String.Equals(pSwitch.Trim().ToUpper(), Arguments[i].Trim().ToUpper()))
{
Arguments[i] = null;
}
“问题”已解决
【问题讨论】:
-
你确定字符串相等吗?空格?套管?
-
将其设置为 null 与将其从列表中删除不同。此外,它对我有用。您需要提供有关问题所在的更多详细信息。
-
尝试修剪和 Ingoring 案例,也正如 Tim 所说,它不会删除它,它会使其无效
-
我没有发现任何问题。在我的机器上工作。也许您的不相等字符串 真的 不相等,但看起来相等(可能是 unicode 字符?)
标签: c# if-statement conditional-statements