C#單例方法替換泛型索引器

單例:
1私有化構造方法
2類的內部提供一個靜態實例-instance
3提供獲取內部的實例方法(這種實例方法用對象調用,靜態可以用類名直接調用)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp3
{
    class Player
    {
        public string name;
        public int level;
        public int experience;
        public int experiencemax;
        public int Hp;
        private Player() { }
        private static Player _instance;
        public static Player Get_instance()
        {
            if (null == _instance)
            {
                _instance = new Player();
            }
            return _instance;
        }
    }
    class Project
    {
        public void Exadd(Player a)
        {
            a.experience = a.experience + 9;
            if (a.experience <= a.experiencemax)
                Console.WriteLine("經驗+9");
            if (a.experience % 10 == 0)
            {
                a.level++;
                Console.WriteLine("等級加一,成爲LEVEL" + a.level);
            }

        }
        public void Attack(Player b)
        {
            if (b.Hp > 0)
            {
                b.Hp--;
                Console.WriteLine("Hp - 1");
            }
            else Console.WriteLine("角色已死亡");
        }
    }
    class MainClass
    {
        public static void Main(string[] args)
        {
            Player He = Player.Get_instance();
            He.Hp = 20;
            He.level = 1;
            He.experience = 1;
            He.experiencemax = 50;
            He.name = "張藝興";
            Project c = new Project();
            c.Attack(He);
            c.Exadd(He);
            Console.ReadKey();
        }
    }
}

方法替換:子類繼承父類後,可以繼承父類的方法,在子類中重現實現,也可以隱藏父類方法,重新在子類實現。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp3
{
    class Dad
    {
        public void hu()
        {
            Console.WriteLine("在dad中定義的");
        }
        public void By()
        {
            Console.WriteLine("在dad中定義的2");
        }
    }
    class Son:Dad
    {
         public void Js()
        {
            Console.WriteLine("在son中定義");
        }
        public new void By()
        {
            Console.WriteLine("在son中定義的2");
        }
    }
   
    class MainClass
    {
        public static void Main(string[] args)
        {
            Dad p = new Son();
            p.By();
            p.hu();
            Son y = new Son();
            y.hu();
            y.Js();
            y.By();
            Console.ReadKey();
        }
    }
}

索引器
泛型類:使用多種數據類型。
一:索引器

namespace ConsoleApp3
{
    class Make
    {
        //索引器
        public int this[int index]
        {
            set
            {
                _arr[index] = value;
            }
            get
            {
                return _arr[index];
            }
        }
        private int[] _arr;
        public int Count=0;
        public  Make()
        {
            _arr = new int[100];
        }
        public void  Addnum(int value)
        {
            _arr[Count] = value;
            Count++;
        }
       public void Putaudience()
        {
            Console.Write("一共有"+Count+"個元素:(");
            for(int i = 0; i < Count; i++)
            {
                Console.Write (_arr[i]);
                if (i != Count - 1)
                {
                    Console.Write(",");
                }
                else Console.Write(")");
            }
            Console.WriteLine();
            
        }
    }
    class MainClass
    {
        public static void Main(string[] args)
        {
            Make  p = new Make  ();
            p.Addnum(54);
            p.Putaudience();
            p.Addnum(67);
            p.Putaudience();
            p.Addnum(23);
            p.Putaudience();
            p[0] = 11;
            Console.WriteLine("arr[1]=" + p[0]);
            Console.ReadKey();
        }
    }
}


二、泛型。所有的要用到的數據類型都要改成T,泛型的代碼中不能用算術運算符,因爲類型不確定,可能是自己的定義的類型等等,不能進行大小或者其他比較。
T S U V K
改動的代碼

namespace ConsoleApp3
{
    class Make<T>
    {
        //索引器
        public T this[int index]
        {
            set
            {
                _arr[index] = value;
            }
            get
            {
                return _arr[index];
            }
        }
        private T [] _arr;
        public int Count=0;
        public  Make()
        {
            _arr = new T [100];
        }
        public void  Addnum(T  value)
        {
            _arr[Count] = value;
            Count++;
        }
       public void Putaudience()
        {
            Console.Write("一共有"+Count+"個元素:(");
            for(int i = 0; i < Count; i++)
            {
                Console.Write (_arr[i]);
                if (i != Count - 1)
                {
                    Console.Write(",");
                }
                else Console.Write(")");
            }
            Console.WriteLine();
            
        }
    }
 Make<int >  p = new Make<int >  ();
            p.Addnum(54);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章