MCSD的70-483测试的一道题。答案不晓得是什么。

liguo9860 2015-08-22 11:11:48
下面这个是问题:


意思是要访问Catalog这个单例。需要满足三个条件:
1、需要在get方法中初始化_catalog这个字段;
2、_catalog字段只允许初始化一次;
3、当_catalog在必须要初始化时在外面加上lock。

英文不好,大概就是这样吧。

在下面给出的几个语句中,选择正确的几行拼接到一起,满足需求。
...全文
180 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
liguo9860 2015-08-27
  • 打赏
  • 举报
回复
引用 4 楼 github_22161131 的回复:
[quote=引用 3 楼 liguo9860 的回复:] 我实验了一下,这样的话流程是正确的,不明白那个错误的答案是怎么想出来的,而且还不只一个人说那个答案是对的。郁闷。
这题给出的上下文,答案只有这一种可能,就是用来实现单例的双检锁。你可以Google "c# double-checked locking" 看看相关信息。我估计那些能说其它答案对的人根本就没实际用过,甚至有可能都不知道lock是干什么的,看到个答案就想当然是对的,然后强行解释。[/quote] 好吧,估计真是这样的。
winnowc 2015-08-23
  • 打赏
  • 举报
回复
引用 3 楼 liguo9860 的回复:
我实验了一下,这样的话流程是正确的,不明白那个错误的答案是怎么想出来的,而且还不只一个人说那个答案是对的。郁闷。
这题给出的上下文,答案只有这一种可能,就是用来实现单例的双检锁。你可以Google "c# double-checked locking" 看看相关信息。我估计那些能说其它答案对的人根本就没实际用过,甚至有可能都不知道lock是干什么的,看到个答案就想当然是对的,然后强行解释。
liguo9860 2015-08-23
  • 打赏
  • 举报
回复
引用 2 楼 github_22161131 的回复:
双检锁:

if (_catalog == null)
  lock (_lock)
    if (_catalog == null) _catalog = new Catalog();
我实验了一下,这样的话流程是正确的,不明白那个错误的答案是怎么想出来的,而且还不只一个人说那个答案是对的。郁闷。
winnowc 2015-08-22
  • 打赏
  • 举报
回复
双检锁:

if (_catalog == null)
  lock (_lock)
    if (_catalog == null) _catalog = new Catalog();
liguo9860 2015-08-22
  • 打赏
  • 举报
回复
以下这个是网站上给出的答案,
还有人说是把下面这个答案的第一句换成if (_catalog == null) _catalog = new Catalog();


我觉得这些答案都是不对的。

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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