在c#中创建的对象存储在哪里?

时间:2015-01-28 10:47:51

标签: c# asp.net

假设我创建了一个对象

public UserDetails GetUserDetail(){
    UserDetails user=new UserDetails();
    user.Name=someFunctionThatReturnsName();
    user.BankAccountNumber=someInternalFunctionThatReturnsAccountNumberFromDB();
    return user;
}

当我在代码隐藏文件中创建此对象时,这些对象到底存储在哪里? 它们存储在客户端吗?如果是,我可以修改这些值吗? 假如Facebook在对象中存储登录用户的详细信息,我可以使用控制台或客户端的某些东西来修改它吗?

当100个人同时访问Web应用程序时,如何处理? 如何创建和适当返回对象?

所以每当我创建/访问对象时,我都会点击服务器?

2 个答案:

答案 0 :(得分:3)

有很多可能性。在您提供的示例中,对象存储在服务器端内存中。对于每个单个用户,在请求期间将存储一个对象。

如果您声明static object,它将存储在服务器端内存中但存储在appDomain上,我的意思是,将与网站上的所有用户共享一个实例。

ASP.NET对象

在asp.net中,还有可能在SessionViewState以及来自asp.net plataform的其他对象中存储对象。我建议你阅读更多关于它们的内容,并在需要时使用它。

根据上下文,您可以存储自定义对象的通用字典,并在单个引用上使用它。

值类型与参考类型

只是补充一点,我认为重要的是你看到了一些内容,values types and reference types如何存储,看看它们是如何工作的以及你应该如何关心你的对象。基本上是:

  • 参考类型 - 在堆上
  • 值类型 - 在堆栈内存

答案 1 :(得分:2)

它们存储在服务器的内存中。简单来说,服务器上的工作线程分配内存。当100个人访问该站点时,在内存中分配了100个对象。一旦这些物体超出范围,它们就会死亡(或至少它们被垃圾收集)。