object m_obj = m_isRight?MyWrite("true"):MyWrite("false"); 
和下面一个意思
if(m_isRight)
{
m_obj=MyWrite("true"):
}else
{
m_obj=MyWrite("false"):
}

解决方案 »

  1.   

    相当于:
    bool m_isRight = false;
    object m_obj = null;
    if(m_isRight==true)
    {
        m_obj = MyWrite("true");
    }
    else
    {
        m_obj = MyWrite("false"); 
    }
    return m_obj; MyWrite应该是另一个方法
      

  2.   

    如果m_obj = m_isRight则执行MyWrite("true")
    否则执行MyWrite("false");
    这是典型的三元写法!!
      

  3.   

    条件运算符 (?:) 根据布尔型表达式的值返回两个值中的一个。条件运算符的格式如下 condition ? first_expression : second_expression;
     
    如果条件为 true,则计算第一表达式并以它的计算结果为准;如果为 false,则计算第二表达式并以它的计算结果为准。只计算两个表达式中的一个。使用条件运算符,可以更简洁、雅观地表达那些否则可能要求 if-else 结构的计算。这种问题你该去看MSDN...
      

  4.   

    object 这种写法,你是问这个吧!后面的?意思,你看楼上几位的就好了。我来说一下这个object这种用法。这就是常听说的,装箱。也就是把值给了对像。结果就是对象m_obj具备了一个bool型值。具体意义,我就不清楚了,也很希望高人说一下,有什么好处。
      

  5.   

    我想起来了,补以一下,其实装箱的实际意义应在于,引用类型的使用。
    2.0多了好多,引用类型比较如, Eqals,这个虚方法不支持值直接比较。
    所以我们要使用引用类型。引用类型,可以通过装箱就是你前面提到的操作给值。
      

  6.   

    错了...结果是MyWrite(string s)的返回值...不一定是bool值...
      

  7.   

    “?:”表达式相当于一个if语句,如“A?B:C”转换为if语句如下:
    if(A)
    {
       B;
    }
    else
    {
       C;
    }
    m_isRight?MyWrite("true"):MyWrite("false")执行完后,m_isRight的值为MyWrite("false")的值;
      

  8.   

    最基本的语法,类C的都有这个东东,c/c++/js/java/c#等
      

  9.   

    相当于:0?printf("1"):printf("0");
      

  10.   

    是个三元运算,首先判断问号前面的表达式为“真”还是为“假”,如果为“真”,就执行分号前面的表达式;如果为“假”就执行分号后面的表达式。
    就本程序来说,因为m_isRight = false,为假,所以这句
    object m_obj = m_isRight?MyWrite("true"):MyWrite("false"); 
    相当于object m_obj = MyWrite("false"); 如果m_isRight = true,那上句就相当于
    object m_obj =MyWrite("true");