C#类型轮换的问题

crecrecre 2009-03-27 05:24:47
int count = (int)command.ExecuteScalar();
int count = convert.toInt16(command.ExecuteScalar());
上面两个转换方式有不同吗?

int i = 123;
string s = (string)i; //这样就不对,是因为i不是对象?
string s = i.toString(); //

toString() // 打点后,都会出现。

想问下放在前面与放在后面有什么不同?
什么情况下放在前面,什么情况下放在后面?
...全文
107 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
哈哈潜伏哥 2009-03-30
  • 打赏
  • 举报
回复
放在前面是强制类型转换,不过这个可能会出错的。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里面了。在这里可以不用强制转换,因为显得多余了。
十八道胡同 2009-03-29
  • 打赏
  • 举报
回复
放到前面是强制类型转换。
tcxx2008 2009-03-29
  • 打赏
  • 举报
回复
寻找回答更加正确的人
PandaIT 2009-03-29
  • 打赏
  • 举报
回复
int i = 123; 
string s = (string)i;
//本身不是string怎么转?i在这里是一个整形的变量

string i="123";
string s=(string)i;
Console.WriteLine(s);

//强转必须是string类型才行
crecrecre 2009-03-28
  • 打赏
  • 举报
回复
题目应该是:C#类型转(轮)换的问题
qq8352280 2009-03-28
  • 打赏
  • 举报
回复
放在前面是强制的转换的··

而放在后面也是一中的转换··

两者MS是没什么区别··
wojiaochenglong 2009-03-28
  • 打赏
  • 举报
回复
如果i是一个object类型可以放在前面表示强制转换,放在后面的可以适用于任何类型(只要能.ToString()的)
realgz 2009-03-28
  • 打赏
  • 举报
回复
强制转换的前提是“已经是”,但是“还不知道是”,其实很多时候只是一个拆箱
convert 的作用却是 “不是就让你是” 你说一样么。
linkjr 2009-03-27
  • 打赏
  • 举报
回复
比如参数类型是一个Object对象类型。。那加或不加都没啥太大的关系滴
linkjr 2009-03-27
  • 打赏
  • 举报
回复
放在前面代表强制转换。。放在后面。。- -
并不是都可以.ToType的。。。
一般转换方式有Convert.ToType(parameter..)和Type.Parse(parameter..)
你看下括号里面的参数类型。。
crecrecre 2009-03-27
  • 打赏
  • 举报
回复
在从数据库里查询出数据后
comboBox1.Items.Add(sdr["品名"]);
comboBox1.Items.Add((string)sdr["品名"]);
加(string)与不加(string)一样,到底加还是不加?

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧