場景 在開發中,經常會有一些全局作用域的常量、欄位、屬性、方法等。 需要將這些設置為全局作用域保存且其實例唯一。 註: 博客主頁: https://blog.csdn.net/badao_liumang_qizhi 關註公眾號 霸道的程式猿 獲取編程相關電子書、教程推送與免費下載。 實現 首先新建一 ...
場景
在開發中,經常會有一些全局作用域的常量、欄位、屬性、方法等。
需要將這些設置為全局作用域保存且其實例唯一。
註:
博客主頁:
https://blog.csdn.net/badao_liumang_qizhi
關註公眾號
霸道的程式猿
獲取編程相關電子書、教程推送與免費下載。
實現
首先新建一個全局的class,名字隨意,這裡叫Global。
public class Global { }
為了保證其單例實現,在類中設置如下
private static string _lockFlag = "GlobalLock"; private static Global _instance; private Global() { } public static Global Instance { get { lock (_lockFlag) { if (_instance == null) { _instance = new Global(); } return _instance; } } }
全局常量實現
public const int INDENT = 5; public const string FONT_FAMILY = "宋體";
全局欄位實現
private string _currCompareDataFile; private List<DataTreeNode> _compareData = new List<DataTreeNode>();
全局屬性實現
public string CurrCompareDataFile { get { return _currCompareDataFile; } set { _currCompareDataFile = value; } }
public List<DataTreeNode> CompareData { get { return _compareData; } set { _compareData = value; } }
註:
全局欄位與屬性對應配合使用,上面進行聲明,下麵進行get和set的設置。
如果在取值或者賦值時有特殊的設置,還可以
public string CurrChartTitle { get { if (String.IsNullOrEmpty(this._currDataFile)) { return "預設標題"; } else { return System.IO.Path.GetFileNameWithoutExtension(String.Format("{0}{1}", this._currDataFile, Global.MAIN_EXT)); } } }
全局方法實現
public void Init() { }
使用舉例
常量使用
Global.常量名
Global.XAXIS_ATTRIBUTE_XPATH
欄位使用
欄位一般是在Global里配合屬性使用
public string CurrCompareDataFile { get { return _currCompareDataFile; } set { _currCompareDataFile = value; } }
屬性使用
Global.Instance.CurrCompareDataFile
方法的使用
Global.Instance.Init();