Sdílet prostřednictvím


Postupy: Vytvoření nové metody pro výčet (Průvodce programováním v C#)

Rozšíření metody můžete přidat konkrétní funkce zejména výčtového typu.

Příklad

V následujícím příkladu Grades představuje výčet tříd možné písmeno, které student obdržet ve třídě.Metodu rozšíření s názvem Passing je do Grades zadejte tak, aby každé instanci typu nyní "ví" zda závěrečné představuje či nikoli.

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

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.
 */

Všimněte si, že Extensions třída obsahuje statické proměnné, které dynamicky aktualizovány také a že hodnota vrácená metodou rozšíření odráží aktuální hodnota této proměnné.Tento příklad ukazuje, že na pozadí jsou rozšíření metody uplatnit přímo na statické třídy, ve které jsou definovány.

Probíhá kompilace kódu

Chcete-li spustit tento kód zkopírujte a vložte jej do Visual C# konzole aplikace Projekt, který byl vytvořen v Visual Studio.Ve výchozím nastavení cíle tohoto projektu verze 3.5 .NET Framework, a obsahuje odkaz na System.Core.dll a using směrnice pro System.Linq.Pokud z projektu chybí jeden nebo více těchto požadavků, můžete je přidat ručně.Další informace naleznete v tématu Postupy: Vytvoření projektu LINQ.

Viz také

Referenční dokumentace

Metody rozšíření (Průvodce programováním v C#)

Koncepty

Průvodce programováním v C#