记《learning hard C#学习笔记》 书中一个错误

简介: 以前学过c# 但是不够系统

最近读了一本《learning hard C#学习笔记》 系统的学习一下

读到50页 发现一个问题,这本书用的单例有问题

44.jpg

主要问题:


1 首先public static Person person 这里的public 就有问题  单例里面 这里应该是private


2 在GetInstance方法里面  person = new Person() 这句不对


这样每次调用GetInstance方法都会new一个Person对象出来


就不是单例


线程完全问题等暂且不谈。




两次通过GetInstance()方法获取 Person实例。


发现 私有构造器方法被调用两次且


用==去判断发现,两次获取的Person实例并不相同。


因此不是单例。

55.png

对Person类作如下改动:


   class Person

   {

       private string name;

       private static Person person;

       public string Name

       {

           get { return name; }

       }

       private Person()

       {

           Console.WriteLine("私有构造方法被调用");

           this.name = "learning hard";

       }

       public static Person getInstance()

       {

           if (person == null)

           {

               person = new Person();

           }

           return person;

       }

   }


运行:

   class Program

   {

       static void Main(string[] args)

       {

           Person person1 = Person.getInstance();

           Person person2 = Person.getInstance();

           Console.WriteLine("单例是否有效:{0}", person1 == person2);

           Console.WriteLine("类实例的name属性为:{0}",person1.Name);

           Console.Read();

       }

   }



运行结果:



其次 个人建议方法名用小驼峰命名法


获取实例的方法名用getInstance比较合适


关于单例 参见:http://blog.csdn.net/lovesomnus/article/details/23679505

————————————————

版权声明:本文为CSDN博主「明明如月学长」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/w605283073/article/details/51305359

相关文章
|
2月前
|
编译器 C++
Effective C 高阶笔记
Part1一、让自己习惯C 条款01:视C 为一个语言联邦 C 并不是一个带有一组守则的一体语言:他是从四个次语言( C、Object-Oriented C 、Template、STL ) 组成的联邦政府,每个次语言都有自己的规约。记住这四个次于语言你就会发现C 容易了解得多。
39 5
|
5月前
|
机器学习/深度学习 人工智能 资源调度
【博士每天一篇文献-算法】连续学习算法之HAT: Overcoming catastrophic forgetting with hard attention to the task
本文介绍了一种名为Hard Attention to the Task (HAT)的连续学习算法,通过学习几乎二值的注意力向量来克服灾难性遗忘问题,同时不影响当前任务的学习,并通过实验验证了其在减少遗忘方面的有效性。
102 12
|
5月前
|
存储 机器学习/深度学习 算法
【博士每天一篇文献-算法】连续学习算法之RWalk:Riemannian Walk for Incremental Learning Understanding
RWalk算法是一种增量学习框架,通过结合EWC++和修改版的Path Integral算法,并采用不同的采样策略存储先前任务的代表性子集,以量化和平衡遗忘和固执,实现在学习新任务的同时保留旧任务的知识。
128 3
|
5月前
|
机器学习/深度学习 存储 算法
【博士每天一篇论文-综述】Echo State Network Optimization: A Systematic Literature Review
本文综述了74篇关于Echo State Network(ESN)优化的研究文章,指出生物启发方法尤其是粒子群优化(PSO)是ESN参数优化的常用技术,探讨了ESN在不同参数和拓扑结构下的行为特性,同时识别了超参数优化、评估指标和数据集选择等方面的研究空白。
41 3
|
5月前
|
机器学习/深度学习 存储 人工智能
【博士每天一篇文献-算法】Memory aware synapses_ Learning what (not) to forget
本文介绍了一种名为“记忆感知突触”(Memory Aware Synapses, MAS)的终身学习方法,该方法通过无监督在线评估神经网络参数的重要性,并在新任务学习时对重要参数的更改进行惩罚,有效防止了旧任务知识的覆盖,实现了内存效率和性能提升,同时具有灵活性和通用性。
73 1
|
存储 算法 数据挖掘
FP-Growth算法全解析:理论基础与实战指导
FP-Growth算法全解析:理论基础与实战指导
549 0
|
机器学习/深度学习 算法 数据挖掘
周志华《Machine Learning》学习笔记(14)--计算学习理论
计算学习理论(computational learning theory)是通过“计算”来研究机器学习的理论
260 0
周志华《Machine Learning》学习笔记(14)--计算学习理论
|
算法 PyTorch 算法框架/工具
【论文阅读及复现】(2017)Densely Connected Convolutional Networks + Pytorch代码实现
- 最近的工作表明,如果卷积网络在靠近输入的层和靠近输出的层之间包含较短的连接,则它们可以更深、更准确和更有效地训练。 - 在本文中,我们接受了这一观察并介绍了密集卷积网络(DenseNet),它以前馈方式将每一层连接到其他每一层。具有 L 层的传统卷积网络有 L 个连接——每层与其后续层之间有一个连接——我们的网络有 L*(L+1) /2 个直接连接。 F 或每一层,所有前面的层的特征图被用作输入,它自己的特征图被用作所有后续层的输入。 - DenseNets 有几个引人注目的优势:它们缓解了梯度消失问题,加强了特征传播,鼓励特征重用,并大大减少了参数的数量。 - 我们在四个竞争激烈的对象
185 0
【论文阅读及复现】(2017)Densely Connected Convolutional Networks + Pytorch代码实现
|
C# C语言