C# 实例化的类对于每个用户都是唯一的吗?

C# 实例化的类对于每个用户都是唯一的吗?,c#,asp.net,class,instantiation,C#,Asp.net,Class,Instantiation,给定以下母版页或内容页 namespace Intranet { public partial class Site : System.Web.UI.MasterPage { WebSite.Security.Users.CurrentUser currentUser; protected void Page_Init(object sender, EventArgs e) { if (!Page.IsPo

给定以下母版页或内容页

namespace Intranet
{
    public partial class Site : System.Web.UI.MasterPage
    {
        WebSite.Security.Users.CurrentUser currentUser;

        protected void Page_Init(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                currentUser = new WebSite.Security.Users.CurrentUser();
                currentUser = WebSite.Security.Users.GetCurrentUser(currentUser);
                Label_UserId.Text = currentUser.UserId;
            }
        }
    }
}
namespace Intranet
{
    public class WebSite
    {
        public class Security
        {
            public class Users
            {
                public class CurrentUser
                {
                    public string UserId { get; set; }
                }
                public static CurrentUser GetCurrentUser(CurrentUser cu)
                {
                    cu.UserId = "MethodThatGetsUserId";
                    return cu;
                }
            }
        }
    }
}
这就叫以下

namespace Intranet
{
    public partial class Site : System.Web.UI.MasterPage
    {
        WebSite.Security.Users.CurrentUser currentUser;

        protected void Page_Init(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                currentUser = new WebSite.Security.Users.CurrentUser();
                currentUser = WebSite.Security.Users.GetCurrentUser(currentUser);
                Label_UserId.Text = currentUser.UserId;
            }
        }
    }
}
namespace Intranet
{
    public class WebSite
    {
        public class Security
        {
            public class Users
            {
                public class CurrentUser
                {
                    public string UserId { get; set; }
                }
                public static CurrentUser GetCurrentUser(CurrentUser cu)
                {
                    cu.UserId = "MethodThatGetsUserId";
                    return cu;
                }
            }
        }
    }
}
即使页面上同时有多个不同的用户,返回的实例化类“currentUser”是否包含唯一信息


感谢您的时间和洞察力。

是的,每个请求都会实例化一个新类,而不仅仅是每个用户

类中的静态字段将被共享,您应该使用会话和应用程序数据在请求或用户之间共享数据。

否,使用此行:

 currentUser = new WebSite.Security.Users.CurrentUser();
您正在母版页类中创建一个新实例。在每个
请求
中创建的实例仅在该请求中可用(当然,取决于范围),除非使用
静态
变量。应用程序中所有用户/线程的静态变量都相同

但是,您实际上要做的是获取当前用户。这应该使用
HttpContext.Current.User
Page.Current
来完成,这是一个
IPrincipal
,应该包含您在应用程序的
Authenticate\u请求
方法中填写的信息


要了解有关ASP.NET表单身份验证的更多信息,请参阅:

因此,当属性是静态的,并且我在代码文件中实例化该类时,这就是为什么在不同用户访问调用这些静态属性的页面时,用户ID被共享的原因?我是如何做到这一点的,你将如何存储和访问在页面生命中的属性?我知道我可以使用会话变量,但我喜欢以这种方式使用类的intellisense部分。@user3071434只要传递到会话状态的类是可序列化的,您仍然可以使用强类型类。CurrentUser类的属性包含的字段比userid(由HttpContext填充)多很多,我想要一个地方来设置/获取所有用户信息。