单例学习

本文介绍了一种使用C#实现单例模式的方法。通过私有化构造函数、内部提供静态实例及对外提供获取实例的接口,确保了系统运行期间一个类只存在一个实例,并可被全局访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单例——程序运行时,一个类最多同时存在一个唯一的对象,易于访问对象。
1、私有化构造方法;
2、在类的内部提供一个静态实例;
3、提供接口给外界获取实例


using System;

namespace lesson01{
	
	public class Player {  //玩家属性         
		public string name;    
		public int level;     
		public int hp;           
		public int maxHp;       
		public static Player GetInstance () {      //3、提供接口给外界获取实例      
			if (null == _instance) {          
				_instance = new Player () ;         
			}                  
			return _instance;      
		}        
		private  static Player _instance;          //2、在类的内部提供一个静态实例       
		private Player () {                        //1、私有化构造方法,不让外界随意创建对象;     
		}     
	}         
	public class Bag {        
		public void UseHp () {        
			Player p = Player.GetInstance () ;    
			p.hp += 10;                       
			p.hp = p.hp > p.maxHp ?  p.maxHp  : p.hp;   
		}       
	}   
	class MainClass  {  
		public static void Main ( string[] args ) {   
			Player p = Player.GetInstance () ;      
			p.name = "苏利文";       
			p.level = 1;          
			p.hp = 1;        
			p.maxHp = 100 ;    
			Bag b = new Bag ();    
			b.UseHp ();       
			Console.WriteLine (p.hp);   
			Player p2 = Player.GetInstance () ; 
			Console.WriteLine (p2.name);
		}  
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值