Session["dxef"]="aa"后,可以string strTmp=Session["dxef"]+""而不可以string strTmp=Session["dxef"]?

我是丁学 2006-07-16 04:22:18
Session["dxef"]="aa";
string strTmp=Session["dxef"]; //A
strTmp=Session["dxef"]+""; //B
strTmp=Convert.ToString(Session["dxef"]); //C

为什么A句会出错,而B、C可以通过?
A提示:无法将类型“object”隐式转换为“string”。存在一个显式转换(是否缺少强制转换?)
C可以理解,可为什么B可以隐式转换,而A不可以呢?
...全文
182 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
antena 2006-07-16
  • 打赏
  • 举报
回复
记住:.net支持隐式转换。
再给你一个例子
int ttint = 5;
string abc = "1234" + ttint + "6789";
上面正确,下面错误:
string abc = ttint + "12346789";
jrl5365 2006-07-16
  • 打赏
  • 举报
回复
string strTmp=Session["dxef"]; //A
这两个类型不一样的。。。
string strTmp=Session["dxef"].ToString(); //A
这样吧
net_jian 2006-07-16
  • 打赏
  • 举报
回复

兄台,这是因为:
A : 左值为string 右值为object 不能隐式转换
应该这样写 string strTmp=Session["dxef"].ToString();

B : 如上面朋友所说,右边的加法使.net默认调用了ConCat字符串连接的方法,结果是返回一个字符串型,那么左边和右边就是同一个类型了,可以赋值。

C : 左值为String ,右值经过Convert.ToString()方法也转换成了String ,所以可以赋值。

回答完毕。
hzw66 2006-07-16
  • 打赏
  • 举报
回复
在B中实际调用了
public static string Concat(object, object);

110,539

社区成员

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

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

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