예제 #1
0
        static void Main(string[] args)
        {
            List <Objet> list = new List <Objet>();

            Objet obj = new Objet("coucou");

            list.Add(obj);

            for (int i = 0; i < 10; i++)
            {
                list.Add(new Objet(i, i * i));
            }

            float x = 3;
            float y = 9;

            var res = list.GetFirstElementInPosition(x, y);

            if (res == null)
            {
                Console.WriteLine("Pas d'objet à la position ({0},{1}).", x, y);
            }
            else
            {
                Console.WriteLine(res);
            }

            foreach (var o in list)
            {
                Console.WriteLine("Le nom \"{0}\" de l'objet n°{1} {2} été choisi par défaut.", o.Nom, o.Numéro, o.IsNameDefault() ? "a" : "n'a pas");
            }

            Console.WriteLine(list.GetFirstDefaultObject());

            Console.ReadKey();

            List <int> test = new List <int>();
            // Ne compile pas car test ne contient pas d'élément qui implémente l'interface IPosition (ici int)
            //test.GetFirstElementInPosition(x, y);

            // Ne compile pas car test n'est pas une collection d'Objet
            //test.test.GetFirstDefaultObject();
        }
예제 #2
0
        // Méthodes d'extensions très utiles pour remplace un décorateur quand il n'est pas nécessaire d'accéder à des champs privés, de modifier
        // des propriétés en get only ou de rajouter de nouvelles propriétés à la classe
        // Il est possible de les déplacer directement dans la classe concernée sans modifier le code appelant.


        /// <summary>
        /// Retourne true si les propriétés de l'objet ont toutes leurs valeurs par défaut
        /// </summary>
        /// <param name="t"></param>
        /// <returns></returns>
        static public bool IsDefault(this Objet t)
        {
            return(t.Nom.StartsWith("default") && t.X == 0 && t.Y == 0);
        }