如果是的话,最好的方法是什么?

时间:2013-12-19 20:03:22

标签: c#

我好像有这个问题。首先,if语句有效,最后一个有效。否则,如果不起作用。我该如何纠正呢?

if (pProp.Name == ("_ProjectName"))
{
    var value = pProp.get_Value().ToString();

    if (value.IndexOf("hayy", StringComparison.OrdinalIgnoreCase) > 0)
    {
        using (StreamWriter writer = new StreamWriter(@"C:\Users\ngardner\Desktop\test.txt", true))
        {
            writer.Write("B");
            return;
        }
    }
    else
        if (value.IndexOf("incu", StringComparison.OrdinalIgnoreCase) > 0)
        {
            using (StreamWriter writer = new StreamWriter(@"C:\Users\ngardner\Desktop\test.txt", true))
            {
                writer.Write("B");
                return;
            }
        }
        else
        {
            using (StreamWriter writer = new StreamWriter(@"C:\Users\ngardner\Desktop\test.txt", true))
            {
                writer.Write("M");
            }
        }
}

这是为了澄清我对此进行编码的尝试。

我需要扫描两个不同字符段组合的“_ProjectName”字段。如果该字段为Purchase,那么我希望第二次搜索为true,并写入“B”。

搜索“Hayy”,如果发现使用写出“B”到文本文件 搜索“Purch”,如果找到则使用“B”写入文本文件 如果均未找到,请将“M”写入文本文件

3 个答案:

答案 0 :(得分:4)

您的缩进模糊了这里发生的事情:最终else实际上是最外层if区块的一部分。

你的if else以换行符分隔,确实非常模糊!

缩进正确,这些问题消失了!

答案 1 :(得分:4)

  • 您的.indexof运算符需要与-1进行比较而不是0(除非您确实想要忽略索引0)。
  • 您需要将using语句移动到最外层的包含块。
  • 合并或更好地删除您的退货声明
  • 支持你的其他阻止

试试这个:

if (pProp.Name == "_ProjectName")
{
    var value = pProp.get_Value().ToString();
    using (StreamWriter writer = new StreamWriter(@"C:\Users\ngardner\Desktop\test.txt", true))
    {
        if (value.IndexOf("hayy", StringComparison.OrdinalIgnoreCase) > -1)
        {
            writer.Write("B");
        }
        else
        {
            if (value.IndexOf("incu", StringComparison.OrdinalIgnoreCase) > -1)
            {
                writer.Write("B");
            }
            else
            {
                writer.Write("M");
            }
        }
    }
    // return here if needed
}

答案 2 :(得分:1)

尝试以下方法,我认为现在可行。

if (pProp.Name == ("_ProjectName"))
{
   var value = pProp.get_Value().ToString();

   if (value.IndexOf("hayy", StringComparison.OrdinalIgnoreCase) > 0)
   {
       using (StreamWriter writer = new StreamWriter(@"C:\Users\ngardner\Desktop\test.txt", true))
       {
                writer.Write("B");
                return;
       }
    }
    else
    {
        if (value.IndexOf("incu", StringComparison.OrdinalIgnoreCase) > 0)
        {
            using (StreamWriter writer = new StreamWriter(@"C:\Users\ngardner\Desktop\test.txt", true))
            {
                writer.Write("B");
                return;
            }
        }
        else
        {
            using (StreamWriter writer = new StreamWriter(@"C:\Users\ngardner\Desktop\test.txt", true))
            {
                writer.Write("M");
            }
        }
    }
}

你错过的是在第一个else语句中打开一个括号,然后在结尾处关闭它。