本文主要是介绍记《learning hard C#学习笔记》 书中一个错误,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
以前学过c# 但是不够系统
最近读了一本《learning hard C#学习笔记》 系统的学习一下
读到50页 发现一个问题,这本书用的单例有问题
主要问题:
1 首先public static Person person 这里的public 就有问题 单例里面 这里应该是private
2 在GetInstance方法里面 person = new Person() 这句不对
这样每次调用GetInstance方法都会new一个Person对象出来
就不是单例
线程完全问题等暂且不谈。
两次通过GetInstance()方法获取 Person实例。
发现 私有构造器方法被调用两次且
用==去判断发现,两次获取的Person实例并不相同。
因此不是单例。
对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
这篇关于记《learning hard C#学习笔记》 书中一个错误的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!