int count = (int)command.ExecuteScalar();
int count = convert.toInt16(command.ExecuteScalar());
上面两个转换方式有不同吗?int i = 123;
string s = (string)i; //这样就不对,是因为i不是对象?
string s = i.toString(); // toString() // 打点后,都会出现。想问下放在前面与放在后面有什么不同?
什么情况下放在前面,什么情况下放在后面?

解决方案 »

  1.   

    在从数据库里查询出数据后
    comboBox1.Items.Add(sdr["品名"]);
    comboBox1.Items.Add((string)sdr["品名"]);
    加(string)与不加(string)一样,到底加还是不加?
      

  2.   

    放在前面代表强制转换。。放在后面。。- -
    并不是都可以.ToType的
    一般转换方式有Convert.ToType(parameter..)和Type.Parse(parameter..)
    你看下括号里面的参数类型。。
      

  3.   

    比如参数类型是一个Object对象类型。。那加或不加都没啥太大的关系滴
      

  4.   

    强制转换的前提是“已经是”,但是“还不知道是”,其实很多时候只是一个拆箱
    convert 的作用却是 “不是就让你是” 你说一样么。
      

  5.   

    如果i是一个object类型可以放在前面表示强制转换,放在后面的可以适用于任何类型(只要能.ToString()的)
      

  6.   

    int i = 123; 
    string s = (string)i;
    //本身不是string怎么转?i在这里是一个整形的变量string i="123";
    string s=(string)i;
    Console.WriteLine(s);//强转必须是string类型才行
      

  7.   

    放在前面是强制类型转换,不过这个可能会出错的。ToString是c#编译器提供的转换为字符串的方法。.net中几乎所有类的方法属性都有这个方法。如果你新添加了一个类的话,那么这个类,在使用时也默认具有了ToString这个方法,当然这个是ToString的方法是编译器替你加上去的。因为是编译器自动添加的,所以不一定会有你想要的结果。比如你定义一个结构类型 ABC,那么ABC也有一个tostring方法,但这个方法调用返回的结果却是返回这个结构类型的名字。如果要得到你想要的结果,那你必须重写tostring方法才行的。比如下面的代码得到的结果就是ABC的限定名。        public struct ABC
            {
                public string bbb;
                public int ccc;
            }
            private void button2_Click(object sender, EventArgs e)
            {
                ABC abc = new ABC();
                MessageBox.Show(abc.ToString());
            }关于放在前面还是后面的问题,楼主应该学习一下C#类型互转了。
    object类型是可变类型,可以转换为任意类型,不过结果不一定是你想要的结果。关于你在1楼的代码,原因如下:comboBox1.Items.Add方法的参数是一个object类型的,因为object类型是看变类型的,所以,无论后面跟什么参数都不会有错。因为编译器会执行转换的。
    因为你即将添加的值实际是一个字符串类型的参数,所以编译器就将object自动转换成string然后添加到Combox里面了。在这里可以不用强制转换,因为显得多余了。