Megosztás a következőn keresztül:


Új metódus létrehozása enumeráláshoz (C# programozási útmutató)

A bővítménymetelyekkel egy adott számtípusra jellemző funkciókat adhat hozzá.

Példa

Az alábbi példában az Grades enumerálás azokat a lehetséges betűosztályzatokat jelöli, amelyeket egy tanuló megkaphat egy osztályban. A rendszer hozzáad egy elnevezett Passing bővítménymetódust a Grades típushoz, hogy az adott típus minden példánya "tudja", hogy az átmenő osztályzatot jelöl-e.

using System;

namespace EnumExtension
{
    // Define an extension method in a non-nested static class.
    public static class Extensions
    {
        public static Grades minPassing = Grades.D;
        public static bool Passing(this Grades grade)
        {
            return grade >= minPassing;
        }
    }

    public enum Grades { F = 0, D=1, C=2, B=3, A=4 };
    class Program
    {
        static void Main(string[] args)
        {
            Grades g1 = Grades.D;
            Grades g2 = Grades.F;
            Console.WriteLine("First {0} a passing grade.", g1.Passing() ? "is" : "is not");
            Console.WriteLine("Second {0} a passing grade.", g2.Passing() ? "is" : "is not");

            Extensions.minPassing = Grades.C;
            Console.WriteLine("\r\nRaising the bar!\r\n");
            Console.WriteLine("First {0} a passing grade.", g1.Passing() ? "is" : "is not");
            Console.WriteLine("Second {0} a passing grade.", g2.Passing() ? "is" : "is not");
        }
        /* Output:
            First is a passing grade.
            Second is not a passing grade.

            Raising the bar!

            First is not a passing grade.
            Second is not a passing grade.
        */
    }
}

Vegye figyelembe, hogy az Extensions osztály tartalmaz egy dinamikusan frissített statikus változót is, és a bővítménymetódus visszatérési értéke a változó aktuális értékét tükrözi. Ez azt mutatja, hogy a színfalak mögött a bővítménymetszetek közvetlenül azon a statikus osztályon vannak meghívva, amelyben definiálva vannak.

Lásd még