方案一: 单列模式 #region 单列模式 /// <summary>
/// 静态本身对象
/// </summary>
private static LoginModel theLoginModel = null; /// <summary>
/// 私有构造方法
/// </summary>
private LoginModel() { } /// <summary>
/// 返回本身对象
/// </summary>
/// <returns></returns>
public static LoginModel Instance()
{
if (theLoginModel == null)
{
theLoginModel = new LoginModel();
}
return theLoginModel;
} #endregion
方案二: private static string _Login_UserName; public static string Login_UserName
{
get { return LoginModel._Login_UserName; }
set { LoginModel._Login_UserName = value; }
}
/// 静态本身对象
/// </summary>
private static LoginModel theLoginModel = null; /// <summary>
/// 私有构造方法
/// </summary>
private LoginModel() { } /// <summary>
/// 返回本身对象
/// </summary>
/// <returns></returns>
public static LoginModel Instance()
{
if (theLoginModel == null)
{
theLoginModel = new LoginModel();
}
return theLoginModel;
} #endregion
方案二: private static string _Login_UserName; public static string Login_UserName
{
get { return LoginModel._Login_UserName; }
set { LoginModel._Login_UserName = value; }
}
你所列的两种方案也不是一回事,没有可比性,第一种那是设计模式,第二种那是一个静态属性
要说区别,第一中是只保证运行时只初始化一次该对象(第一种应该加一个状态检测),第二种可能会有多次写入
在程序使用中,有些参数需要时常使用,还有些出现在循环、Timer中,因此想到用全局变量!
方法1: 使用了延迟加载,2 就是直接分配,
不过1中存在多线程访问时,可能会有多个实例的现象,这个需要用到 double check关于内存分配,要在这种内容上对比,基本上的不出结果。
建议楼主继续关注其他更多,更广的面。
比如:架构设计方面的问题,业务流程的优化,等
如果仅仅是这个需求,上面的两种可以说没有差别,这种细微的差别只有大量调用时才会凸显。
并且,他们的最终都是使用了 static,所以最后看不出来内存有和差别,只是创建的时间有先后而已。全局的变量一般做法就是使用结构体或固定的一个类(eg:GlobalSettings)作为信息载体,此类 GlobalSettings 是否实现单态并不重要,更重要的是其内部的字段,类型划分需要注意而已。