猿问

关于Session[..]返回的变量的是什么类型?

我在一个页面输入用户名和密码,然后用Session传递他们到另外一个页面,在那里判断是否用户密码是否正确,是则宣示欢迎该用户。但是:
if ( Session["Name"]=="user" && Session["password"]== "123")
{
Label1.Text = "欢迎进入!" + Session["Name"];
Response.Write(Session["Name"]);

}
(1) if总是不为真,我明明是输入user和123 ?是Session类型不是字符串吗?
(2 ) 我直接Label1.Text =Session["Name"];总是不对,好像提示类型不匹配,写为Label1.Text = "欢迎进入!" + Session["Name"];却没问题?

UYOU
浏览 439回答 4
4回答

Helenr

session是一个object,使用时注意类型转换。Session["Name"].ToString()=="user"就对了第二个问题也是同样道理,Label1.Text =Session["Name"].ToString()至于最后一个问题,一个字符串和一个object类型进行运算(直接运算是不可能的)系统会把object自动转换为string型,再进行运算

沧海一幻觉

(1)Session 中可以存任何object类型的变量Label1.Text =Session["Name"]; 如果这么写应该报的错是"不能将object类 型隐式转换成string类型....",因为你在直接赋值的时候是Session是将"user"和"123"当成object 了这样写就对了:Label1.Text =Session["Name"].ToString();(2)C# 中有自动转换类型的功能(比如 "123"+123="123123" 而不是 246)所以 Label1.Text = "欢迎进入!" + Session["Name"]; 中的Session是被自动转换成了string类型

犯罪嫌疑人X

session 存的时object类型.使用时要转换成具体类型.if ( Session["Name"].ToString()=="user" && Session["password"].ToString()== "123")Label1.Text =Session["Name"].ToString();写为Label1.Text = "欢迎进入!" + Session["Name"];没问题是因为存在了隐式转换,等价于Label1.Text = "欢迎进入!" + Session["Name"].ToString();查看完整回答
随时随地看视频慕课网APP

相关分类

Java
我要回答