ASP.NET中能做到全局对象么?

iheshi 2006-05-27 10:23:50
比如,我在A页面生成一个对象Object。它有很多自有的成员变量,方法、属性等。
当我换到另一个页面后,甚至跨越很多个页面后,能不再重新生成它继续使用么?
比如我在页面Z不需要在生成一个同类的Object,我就可以直接使用Object.Function()?

现在能实现么?
...全文
542 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
iheshi 2006-05-29
  • 打赏
  • 举报
回复
TO lincai(Share赖-_-#)
不会的。
每一个用户有每一个用户的SESSION
lincai 2006-05-28
  • 打赏
  • 举报
回复
MyObject o = (MyObject)Session["MyObject"];
这样不算生成一个新的对象吧,只是多了一个对象的指针而已,而不是说把原来的对象克隆为新对象的。

如果只是多一个对像指针,那么每个用户的Session["MyObject"]的值是不是都一样了?
iheshi 2006-05-28
  • 打赏
  • 举报
回复
TO nicch(随风飘扬)
正解!我当时没理解正确。哈哈。一时疏忽。
nicch 2006-05-28
  • 打赏
  • 举报
回复
MyObject o = (MyObject)Session["MyObject"];
这样不算生成一个新的对象吧,只是多了一个对象的指针而已,而不是说把原来的对象克隆为新对象的。
feifeile 2006-05-28
  • 打赏
  • 举报
回复
25301577
ASP.Net QQ群
amandag 2006-05-28
  • 打赏
  • 举报
回复
在session里只保存对象的id,在cookie里保存对象其他的信息,或者在数据库里保存对象其他信息,要上班拉,不说了
ll_e_mail 2006-05-28
  • 打赏
  • 举报
回复
seeion如果很多对系统性能有很大的影响.
yes555 2006-05-28
  • 打赏
  • 举报
回复
建议不要什么东东都用session,特别是对象。
最好用cache,少用session。
iheshi 2006-05-27
  • 打赏
  • 举报
回复
好吧,明天起床就结贴吧,看还有没有什么意见。

其实当我看到MyObject o = (MyObject)Session["MyObject"];这句时我就已经知道了。
Web Application和传统的应用程序的差异在不能保持状态,所以才需要用到Session。

我原本的意思是像在第二个页面直接调用内存中已经存在的一个实例的某个方法。但仔细想想却会发现受很多因素的制约。空了我再认真想想这个问题。
其实MyObject o = (MyObject)Session["MyObject"];这句语句又生成了一个新的对象了,只是这新的对象中的信息和前面那个对象中的信息一样而已。

嗯,换句话说,其实没有必要使用全局的对象。
我本想,假如有一个对象池,用户登录网站后,代表用户的这个对象就一直存在于这个对象池里面。然后每个页面我都可以使用这个对象,无须再次生成这个对象。但这个仅限于小范围吧,假如一个网站同时在线10000人,就会有10000个对象。这和传统的每个页面都重复生成某特定用户的对象相比,那个更有效率呢?
iheshi 2006-05-27
  • 打赏
  • 举报
回复
TO lazyfish(呆呆虫)
谢谢!很实用!
iheshi 2006-05-27
  • 打赏
  • 举报
回复
TO fancyf(凡瑞)
您发贴时,我正在看这篇文章呢。现在我要好好补补基础才行了呀!感谢您!
lazyfish 2006-05-27
  • 打赏
  • 举报
回复
[Serializable]
public class MyObject {
public int n1 = 0;
public int n2 = 0;
public String str = null;
}

a.aspx.cs:
MyObject o = new MyObject();
Session["MyObject"] = o;

b.aspx.cs:
if(Session["MyObject"] != null) {
MyObject o = (MyObject)Session["MyObject"];
}
fanruinet 2006-05-27
  • 打赏
  • 举报
回复
要使一个类可序列化,最简单的方法是使用 Serializable 属性对它进行标记,如下所示:

[Serializable]
public class MyObject {
public int n1 = 0;
public int n2 = 0;
public String str = null;
}


参考
《.NET 中的对象序列化》
http://www.microsoft.com/china/msdn/archives/library/dndotnet/html/objserializ.asp
iheshi 2006-05-27
  • 打赏
  • 举报
回复
yanfeng(烟峰)
能举个实际例子么?
yanfeng 2006-05-27
  • 打赏
  • 举报
回复
定义一个类,然后用Session或Cookie保存这个类的对象不就行了吗?
iheshi 2006-05-27
  • 打赏
  • 举报
回复
I just want to know how to sequelize a object, and put it into the Session.
And How to put it back?
iheshi 2006-05-27
  • 打赏
  • 举报
回复
TO lazyfish(呆呆虫) :
能给个实际代码范例么?很简单那种,我能看懂就成。
iheshi 2006-05-27
  • 打赏
  • 举报
回复
TO fancyf(凡瑞):
Yep,确实可以使用静态类来代替。但,假如,我需要的并不是一个静态类呢?
不好意思。说的比较糊涂了。

我确实需要的是这种全局性的对象。在程序运行时,也许我需要多个这样的全局性对象,每个都有自己独特的身份。但却有着类似的操作。
lazyfish 2006-05-27
  • 打赏
  • 举报
回复
序列化后保存到Session中吧。
shalen520 2006-05-27
  • 打赏
  • 举报
回复
使用静态成员,用static标记
加载更多回复(2)

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧