namespace DesignPatterns.Singleton
{ /// <summary>
///Single 的摘要说明
/// </summary>
public class Single
{
private static Single single = null;
private static string str; private Single()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
public static Single GetInstance()
{
if (single == null)
{
single = new Single();
str = "单例模式测试";
}
else
{
str = "我已经存在了";
}
return single;
} public string Show()
{
return str;
}
}
}
public partial class DesignPatterns_SingletonTest : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(DesignPatterns.Singleton.Single.GetInstance().Show());
Response.Write(DesignPatterns.Singleton.Single.GetInstance().Show());
}
}各位帮忙分析下,我运行显示 单例模式测试我已经存在了 但是为什么关闭后重新运行显示 我已经存在了我已经存在了???除了给null大家有没有其他办法呀。
{ /// <summary>
///Single 的摘要说明
/// </summary>
public class Single
{
private static Single single = null;
private static string str; private Single()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
public static Single GetInstance()
{
if (single == null)
{
single = new Single();
str = "单例模式测试";
}
else
{
str = "我已经存在了";
}
return single;
} public string Show()
{
return str;
}
}
}
public partial class DesignPatterns_SingletonTest : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(DesignPatterns.Singleton.Single.GetInstance().Show());
Response.Write(DesignPatterns.Singleton.Single.GetInstance().Show());
}
}各位帮忙分析下,我运行显示 单例模式测试我已经存在了 但是为什么关闭后重新运行显示 我已经存在了我已经存在了???除了给null大家有没有其他办法呀。
多谢这位兄弟啦,我关闭的是浏览器,然后重新开的个浏览器。
我按照你的方法,把ASP.NET那个关了,重新运行就显示正常了。但是我想继续问下,如果这样子加入发布了网站,会是正常的吗?
C# 的对象是自动回收的,我就感觉这个单例没那么快被回收。
这个就只有个单线程吧,要安全加个LOCK该可以吧,
现在是我不管这个是不是单例模式,我的意思是想说明这种情况,
如果我现在发布了这个页面,这个页面single对象只允许一个实例存在,
在用户浏览这个页面时会是怎样一个情况呀