c#如何只能建立類的一個例項(一)

wisdomone1發表於2012-04-07
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Single
    {
        //類如何只構建一個例項 
        private static bool iscreated = false;
        private Single()
        {
            
        }
        //透過呼叫類的公共方法來返回類的僅一個單例項
        //結合類靜態變數iscreated及私有建構函式來控制只能建立類的一個例項
        public static Single Getsingle()
        {
            if (!iscreated)
            {
                iscreated = true;
                Console.WriteLine("建立了類single的第一個例項");
                return new Single();
                
            }
            else
            {
                //throw與return是互斥語句
                throw new Exception("已經建立了一個類的例項了,不能再建了");
                //throw;throw子句只能在try catch的catch中使用
                return null;
                
            }
               
        }
    }

}

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;//arraylist派生於array類
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
       //學習while
      public static void Main(string[] args)
      {
          //不能直接方問single類的建構函式,建構函式也分為公共私有保護內部
          //Single s = new Single();
          Single s1 = Single.Getsingle();
          //但這種方法還是要編寫程式碼來檢查single類的方法getsingle的返回值是否為空,來控制是否僅建立類的一個例項
          //if (s1!=null )
          //Console.WriteLine("建立了single類第一個例項");
          //Single s2 = Single.Getsingle();
          //if (s2 == null)
          //    Console.WriteLine("single類只能建立一個例項");
          Single s2 = Single.Getsingle();
          Console.ReadKey();
      }
    }
    

}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-720637/,如需轉載,請註明出處,否則將追究法律責任。

相關文章