單例:
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);