Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Int会话变量是否要递增?_C#_Session_Variables_Session Variables - Fatal编程技术网

C# Int会话变量是否要递增?

C# Int会话变量是否要递增?,c#,session,variables,session-variables,C#,Session,Variables,Session Variables,会话变量是否可以是int?我想增加Session[“pagesview”]+1每次加载页面时。尝试递增会话变量时出错 if (Session["PagesViewed"].ToString() == "2") { Session["PagesViewed"] = 0; } else { Session["PagesViewed"]++; } Session[“pagesview”]将只返回一个对象-这就是.ToString()调用工作的原因。您需要将其转换回int,在那里递

会话变量是否可以是
int
?我想增加
Session[“pagesview”]+1每次加载页面时。尝试递增会话变量时出错

if (Session["PagesViewed"].ToString() == "2")
{
     Session["PagesViewed"] = 0;
}
else
{
     Session["PagesViewed"]++;
}

Session[“pagesview”]
将只返回一个对象-这就是
.ToString()
调用工作的原因。您需要将其转换回int,在那里递增,然后将其放回会话中。

是的,可以。但是,
++
只有在编译器知道对象是int时才起作用。它如何知道代码的其他部分没有偷偷地执行
会话[“PagesViewed”]=“Ha”

通过强制转换,您可以有效地告诉编译器您不会执行类似的操作:如果会话变量实际上不是int,您将得到一个运行时异常

int pagesViewed = (int)Session["PagesViewed"];
if (pagesViewed == 2)
{
    pagesViewed = 0;
}
else
{
    pagesViewed++;
}
Session["PagesViewed"] = pagesViewed;

您需要先测试
会话
变量是否存在,然后才能使用它并分配给它

您可以按如下方式执行增量操作

Session["PagesViewed"] = ((int) Session["PagesViewed"]) + 1;
但是,如果
会话[“PagesView”]
不存在,这将导致错误。增量之前的快速
null
测试应该会解决这个问题

if (Session["PagesViewed"] != null)
    Session["PagesViewed"] = ((int)Session["PagesViewed"]) + 1;

您会遇到哪些错误?您需要确保您不在Web场中。如果是,请确认您已共享会话。另外,有点离题,但谷歌分析为您做到了这一点,而且可能效率更高
基本上与
((对象)会话[“pagesview”])+且不合法。无法编译。您需要显式添加
1
会话[“PagesView”]=(int)会话[“PagesView”]+1
可能应该使用
++
作为前缀,因为它首先将赋值作为后缀,因此值不会更改<代码>会话[“页面查看”]=++((int)会话[“页面查看”])