.NET Framework 3.5 memiliki rentang:
Enumerable.Range dari MSDN
Anda dapat menggunakannya dengan "berisi" dan pernyataan IF, karena seperti seseorang mengatakan pernyataan SWITCH menggunakan operator "==".
Berikut sebuah contoh:
int c = 2;
if(Enumerable.Range(0,10).Contains(c))
DoThing();
else if(Enumerable.Range(11,20).Contains(c))
DoAnotherThing();
Tapi saya pikir kita bisa bersenang-senang lagi: karena Anda tidak akan memerlukan nilai kembali dan tindakan ini tidak mengambil parameter, Anda dapat dengan mudah menggunakan tindakan!
public static void MySwitchWithEnumerable(int switchcase, int startNumber, int endNumber, Action action)
{
if(Enumerable.Range(startNumber, endNumber).Contains(switchcase))
action();
}
Contoh lama dengan metode baru ini:
MySwitchWithEnumerable(c, 0, 10, DoThing);
MySwitchWithEnumerable(c, 10, 20, DoAnotherThing);
Karena Anda melewati tindakan, bukan nilai, Anda harus menghilangkan tanda kurung, itu sangat penting. Jika Anda membutuhkan fungsi dengan argumen, cukup ubah jenis Action
ke Action<ParameterType>
. Jika Anda perlu mengembalikan nilai, gunakanFunc<ParameterType, ReturnType>
.
Dalam C # 3.0 tidak ada Aplikasi Partial yang mudah untuk merangkum fakta parameter kasusnya sama, tetapi Anda membuat metode pembantu kecil (sedikit verbose, tho).
public static void MySwitchWithEnumerable(int startNumber, int endNumber, Action action){
MySwitchWithEnumerable(3, startNumber, endNumber, action);
}
Berikut ini contoh bagaimana pernyataan fungsional baru yang diimpor adalah IMHO lebih kuat dan elegan daripada yang imperatif lama.