Seperti yang ditunjukkan orang lain, memanggil metode ekstensi pada referensi nol menyebabkan argumen ini menjadi nol dan tidak ada hal lain yang akan terjadi. Ini memunculkan ide untuk menggunakan metode ekstensi untuk menulis klausa penjaga.
Anda dapat membaca artikel ini sebagai contoh: Cara Mengurangi Kompleksitas Siklon: Penjaga Klausa Versi singkatnya adalah ini:
public static class StringExtensions
{
public static void AssertNonEmpty(this string value, string paramName)
{
if (string.IsNullOrEmpty(value))
throw new ArgumentException("Value must be a non-empty string.", paramName);
}
}
Ini adalah metode ekstensi kelas string yang dapat dipanggil dengan referensi nol:
((string)null).AssertNonEmpty("null");
Panggilan berfungsi dengan baik hanya karena runtime akan berhasil memanggil metode ekstensi dengan referensi nol. Kemudian Anda dapat menggunakan metode ekstensi ini untuk menerapkan klausa penjaga tanpa sintaksis yang berantakan:
public IRegisteredUser RegisterUser(string userName, string referrerName)
{
userName.AssertNonEmpty("userName");
referrerName.AssertNonEmpty("referrerName");
...
}
Cannot perform runtime binding on a null reference
.