Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.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# Asp.net-对会话对象的更改是否持续?_C#_Asp.net - Fatal编程技术网

C# Asp.net-对会话对象的更改是否持续?

C# Asp.net-对会话对象的更改是否持续?,c#,asp.net,C#,Asp.net,我正在使用会话来保存自定义对象UserSession,我访问会话的方式如下: UserSession TheSession = HttpContext.Current.Session["UserSession"] as UserSession; 然后,在我的代码中,我修改了session的一个属性,如下所示 TheSession.Prop1 = some new value; 我的问题是:当我更改值时,它是否会更改HttpContext.Current.session[“UserSessio

我正在使用会话来保存自定义对象UserSession,我访问会话的方式如下:

UserSession TheSession = HttpContext.Current.Session["UserSession"] as UserSession;
然后,在我的代码中,我修改了session的一个属性,如下所示

TheSession.Prop1 = some new value;
我的问题是:当我更改值时,它是否会更改HttpContext.Current.session[“UserSession”]中的会话内的值,还是仅更改session变量,在这种情况下,我需要将对象变量重新分配给会话


谢谢。

标准会话提供程序是一个在内存中存储对象的简单字典

您正在修改您在会话中放置的同一对象,因此修改将保持不变。

(除非您使用的是)

它不需要重新指定对象。因为它们都指向内存中的同一个实例

是的,所以它是同一个对象。在下面的示例中很容易看到:

Session["YourObject"] = yourObject;
yourObject.SomeProperty = "Test";
var objectFromSession = (YourObjectType)(Session["YourObject"]);
Response.Write(objectFromSession.SomeProperty);

Write
将显示:
Test
创建具有静态属性的静态类:

public static class UserSession
{
    public static int UserID
    {
         get { return Convert.ToInt32(Session["userID"]); }
         set { Session["userID"] = value; }
    }
}
当你使用它时:

UserSession.UserID = 23;
Response.Write(UserSession.UserID);

它将使用session变量来存储传递给此属性的信息。

我像这样声明session对象:public class session{…}我在清除中吗?这是一个类,不是一个结构。好的,酷;感谢您的澄清,非常感谢。我永远不会使用结构:)我不是说永远不会使用结构;我是说永远不要使用可变结构。(一个可以改变的)好的,我会记住:如果struct的内容从来都不打算被改变,就使用它(如果这样做是对的,请告诉我)。