Cara membuat metode baru untuk enumerasi (Panduan Pemrograman C#)
Anda dapat menggunakan metode ekstensi untuk menambahkan fungsionalitas khusus untuk jenis enum tertentu.
Contoh
Dalam contoh berikut, enumerasi Grades
mewakili kemungkinan nilai huruf yang mungkin diterima siswa di kelas. Metode ekstensi bernama Passing
ditambahkan ke jenis Grades
sehingga setiap instance dari jenis itu sekarang "tahu" apakah itu mewakili nilai kelulusan atau tidak.
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.
*/
}
}
Perhatikan bahwa kelas Extensions
juga berisi variabel statis yang diperbarui secara dinamis dan nilai kembalian dari metode ekstensi mencerminkan nilai variabel tersebut saat ini. Ini menunjukkan bahwa, di balik layar, metode ekstensi dipanggil langsung pada kelas statis tempat mereka didefinisikan.