对.net 才初步了解,希望各位高手帮忙解释下这段代码的意思,要详细哦!
writeLog是个类名,这样的写法我再其他类里可以通过 writeLog.Current.方法名 直接调用该类里的方法!希望各位高手解释下是什么意思 具体点 谢谢!private static volatile writeLog _instance = null;
private static object _syncObj = new object();
public static writeLog Current
{
get
{
if (_instance == null)
{
lock (_syncObj)
{
if (_instance == null)
{
_instance = new writeLog();
}
}
}
return _instance;
}
} --------------------编程问答-------------------- 单例模式,就是始终只有一个实例 --------------------编程问答-------------------- 静态方法 不需要实例化 直接类调用!! --------------------编程问答-------------------- 就是加了一个static修符词,表示是静态类,不用new,就可以直接访问。
静态类和new的类是不同的原因在于静态类,一开始就加载进内存条,这样内存地址就固定了,但new的话,根据程序流程,那里new 就那里产生实例,内存地址不固定,只有new了之后才知道内存地址,所以,静态类,可以直接使用。而不是静态类不行 --------------------编程问答-------------------- 静态类我知道可以直接调用,但代码为何要申明 volatile 还有object! lock 在这里锁住得是什么! --------------------编程问答-------------------- 有些还真看不懂哦
坐等高手吧 --------------------编程问答-------------------- 1 lock 锁住的是_syncObj,因此肯定锁的住
2 这里声明volatile 我认为想法有误
1)声明volatile是指允许对_instance的实例的多线程访问修改,而单例模式已经强制要求实例化后不会修改
2)对_instance的多线程读调用,我认为是否声明为volatile无任何效用
--------------------编程问答-------------------- public static writeLog Current
{
get
{
if (_instance == null)
{
lock (_syncObj)
{
if (_instance == null)
{
_instance = new writeLog();
}
}
}
return _instance;
}
}
这段是获取属性值Current,用get获取。先判断是否当前的实例为空,如果为空就new writeLog(),不为空就直接返回实例
补充:.NET技术 , ASP.NET