Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
Some C# advanced stuff
//Rextester.Program.Main is the entry point for your code. Don't change it. //Compiler version 4.0.30319.17929 for Microsoft (R) .NET Framework 4.5 using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; namespace Rextester { public interface IClass{ Dynamic obj{get; set;} void OnPlayerDeath(); } public interface ICanDie{ void Kill(); } public struct nameVar<T>{ public string name; public T mois; public nameVar (string _name, T _mois){ name = _name; mois = _mois; } } public class Plant : ICanDie{ public Plant(){ Console.WriteLine("THE PLANT GROWS"); } public void Kill(){ Console.WriteLine("The plant was killed."); } } public abstract class Dynamic : ICanDie{ public delegate void VoidDelegate(); public event VoidDelegate DeathEvent; public Dynamic(VoidDelegate _method){ if(_method != Dynamic.Void){DeathEvent += _method;} } public virtual void Kill(){ if(DeathEvent != null){DeathEvent();} } protected static void Void(){} } public class Enemy : Dynamic{ public Enemy(VoidDelegate _method) : base(_method){} public Enemy() : base(Dynamic.Void){} public override void Kill(){ Console.WriteLine("Enemy Class: Enemy got rekt"); base.Kill(); } } public class Player : Dynamic{ public Player(VoidDelegate _method) : base(_method){} public Player() : base(Dynamic.Void){} public override void Kill(){ Console.WriteLine("Player Class: Player got rekt"); base.Kill(); } } public class Achievments : IClass{ public Dynamic obj{get; set;} public void OnPlayerDeath(){ Console.WriteLine("Achievments Class: THA " + obj + " GOT KILLD"); } } public class Manager : IClass{ public Dynamic obj{get; set;} public void OnPlayerDeath(){ Console.WriteLine("Manager Class: " + obj + " was exterminated"); } } public class Program { public static void Main(string[] args) { IClass[] classes = new IClass[2]; classes[0] = new Achievments(); classes[1] = new Manager(); classes[0].obj = new Player(classes[0].OnPlayerDeath); classes[1].obj = new Enemy(classes[1].OnPlayerDeath); foreach(IClass item in classes){ item.obj.Kill(); } List<ICanDie> dynamics = new List<ICanDie>(); dynamics.Add(new Player()); dynamics.Add(new Enemy()); dynamics.Add(new Enemy()); dynamics[0].Kill(); dynamics[2].Kill(); nameVar<ICanDie>[] nameDys = new nameVar<ICanDie>[5]; for(int i = 0; i < nameDys.Count(); i++){ nameDys[i] = new nameVar<ICanDie>(i + "_Enemy", new Player()); nameDys[i].mois.Kill(); } nameDys[4] = new nameVar<ICanDie>("Planto", new Plant()); nameDys[4].mois.Kill(); nameVar<Dynamic> player = new nameVar<Dynamic>("player", new Player()); } } }
run
|
edit
|
history
|
help
0
Making Anagrams
www
ShakerSort
Testing 006
learning
Pot
1
ConcurrentStack<T>
CallBy Val Vs Ref Double
base interior 0.1