none
【ASP.NET】只有 assignment、call、increment、decrement 和 new 对象表达式可用作语句 RRS feed

  • 问题

  • 程序如下:

    private void addOtherDll(string Pading, int Id, DataTable datatable, int deep,string ConID)

    {

    foreach (DataRow row in rowlist)
            {
                string strPading = "";
                for (int j = 0; j < deep; j++)
                {
                    //if (Id == 1)    // 如果ID为1说明是父节点,此时不需要添加空格
                    //    strPading = "";//用全角的空格
                    //else
                    //    strPading += " ";
                    (Id ==1 )? (strPading += "") : (strPading += " ");
                  
                }

     

               //添加节点
                ListItem li = new ListItem(strPading + (Id==1?"":"|--") + row["name"].ToString(), row["id"].ToString());

        }

    }

    以 上代码中我把以前的代码注释掉了,添加了本以为可以起到同样效果的语句,但运行的时候提示“只有 assignment、call、increment、decrement 和 new 对象表达式可用作语句”错误,令我不解,为什么下面的 ListItem li = new ListItem(strPading + (Id==1?"":"|--") + row["name"].ToString(), row["id"].ToString());中也有类似三木运算,这里好用,而上面的就不可以了呢?难道嵌套层次太多了,不好用的代码在foreach 的for循环中,这样可以有错?

     

    望请高手指点一下,小弟不胜感激!谢谢!

    • 已移动 孟宪会Moderator 2010年6月23日 1:02 (发件人:.NET Framework 一般性问题讨论区)
    2010年6月18日 6:05

答案

  •  (Id ==1 )? (strPading += "") : (strPading += " ");这句话是错误的,通过三目运算符得出的结果没有给任何变量赋值

     

    你这样用

       strPading +=((Id == 1) ? "" : "  ");


    努力+方法=成功
    • 已标记为答案 jinwb1982 2010年6月19日 0:39
    2010年6月18日 6:27

全部回复

  •  (Id ==1 )? (strPading += "") : (strPading += " ");这句话是错误的,通过三目运算符得出的结果没有给任何变量赋值

     

    你这样用

       strPading +=((Id == 1) ? "" : "  ");


    努力+方法=成功
    • 已标记为答案 jinwb1982 2010年6月19日 0:39
    2010年6月18日 6:27
  • 感谢你,提供的方法是对的。为什么我那样写会错误呢?甚至我   Id ==1 ? strPading += "" : strPading += " "  这样写都是错误的,小弟在刚开始想这个问题的时候没有像你那样思考,能说一下你想到这点的思路么?为什么会想到要这样写?谢谢!
    2010年6月18日 6:49
  • 你的错误是没有彻底理解三目运算符的用法,

    b?x:y

    B表示判断条件为true或者false

    X表示为TRUE时的结果,得到这个结果后要付值给一个变量

    Y表示为FALSE是的结果,

    三目运算符是一个整体,你主要是赋值的位置不对,你在好好分析下用法


    努力+方法=成功
    2010年6月18日 11:55
  • 你的错误是没有彻底理解三目运算符的用法,

    b?x:y

    B表示判断条件为true或者false

    X表示为TRUE时的结果,得到这个结果后要付值给一个变量

    Y表示为FALSE是的结果,

    三目运算符是一个整体,你主要是赋值的位置不对,你在好好分析下用法


    努力+方法=成功

    哦,明白了,再简单的东西也不要疏忽啊,你说的很对,x与y是一个值,而我的x与y是表达式了。再次感谢!
    2010年6月19日 0:39