C# 簡單的泛型單例
阿新 • • 發佈:2019-02-06
//SharedInstance.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SharedInstance { public class SharedInstance<T> where T:new() { private static T m_Instance = default(T); public static T Instance { get { if (m_Instance == null) { m_Instance = new T(); } return m_Instance; } } } }
這裡使用了 Where 約束
使用Where 約束,new()約束 讓編譯器知道,提供的任何型別引數都具有預設建構函式。
也只有加了這個約束之後,才能使用 new T() ;
使用方法
//Student.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SharedInstance { public class Student:SharedInstance<Student> { public void GetAge() { Console.WriteLine("12"); } } }
//Program.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SharedInstance { class Program { static void Main(string[] args) { Student.Instance.GetAge(); Student.Instance.GetAge(); } } }
示例下載:
http://pan.baidu.com/s/1gdP01J9