Kadang-kadang saya melihat pertanyaan tentang kasus tepi dan keanehan lain di Stack Overflow yang mudah dijawab oleh orang-orang seperti Jon Skeet dan Eric Lippert, menunjukkan pengetahuan mendalam tentang bahasa dan banyak seluk beluknya, seperti ini:
Anda mungkin berpikir bahwa untuk menggunakan
foreachloop, koleksi yang Anda iterasi harus diimplementasikanIEnumerableatauIEnumerable<T>. Tetapi ternyata, itu sebenarnya bukan keharusan. Yang diperlukan adalah bahwa jenis koleksi harus memiliki metode publik yang disebutGetEnumerator, dan yang harus mengembalikan beberapa jenis yang memiliki pengambil properti publik yang disebutCurrentdan metode publikMoveNextyang mengembalikan abool. Jika kompiler dapat menentukan bahwa semua persyaratan tersebut terpenuhi maka kode dihasilkan untuk menggunakan metode tersebut. Hanya jika persyaratan tersebut tidak terpenuhi kami memeriksa untuk melihat apakah objek mengimplementasikanIEnumerableatauIEnumerable<T>.
Itu hal yang keren untuk diketahui. Saya bisa mengerti mengapa Eric tahu ini; dia ada di tim penyusun, jadi dia harus tahu. Tetapi bagaimana dengan mereka yang menunjukkan pengetahuan yang begitu dalam yang bukan orang dalam?
Bagaimana orang biasa (yang bukan anggota tim C #) mengetahui tentang hal-hal seperti ini?
Secara khusus, adakah metode yang digunakan orang-orang ini untuk secara sistematis membasmi pengetahuan seperti itu, menjelajahinya, dan menginternalisasikannya (menjadikannya milik mereka)?